2012-06-19 49 views

回答

4

yAnTar有正確的想法(存儲當前的最後一個url),但CI URL通常不接受base64編碼字符串中的所有字符(如=)。試試這個:

<a href="<?php echo base_url() ?>korisnik/logout?last_url=<?php echo urlencode(current_url())">Logout</a> 
function logout() { 
    $this->session->sess_destroy(); 
    redirect($this->input->get('last_url')); 
} 

另一種選擇可能是重定向到$this->input->server('HTTP_REFERER'),但我已經在過去(舊版本的谷歌瀏覽器發送favicon.ico)有與問題,通常不推薦它。

+0

它工作得很好,謝謝:) – Sasha

1

您可以添加URL就像方法註銷

<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>" 

接下來在函數的第一選擇

public function logout($url){ 
    redirect(base64_decode($url)); 
} 
+0

這不起作用:( – Sasha

0

如果你只是要求重定向,那麼這樣的事情可以幫助你解決問題。

$url= base_url().'index.php/korisnik/logout'; 
redirect($url); 

從我看到你要麼有base_url()一些問題,或者你缺少index.php在URL請檢查。

2

使用此在註銷功能

$this->session->set_flashdata('redirect_url', current_url()); 

現在在你的另一種方法

if($this->session->flashdata('redirect_url')) 
{ 
    $url = $this->session->flashdata('redirect_url'); 
    redirect($url); 
} 
+0

註銷函數中的'current_url()'是註銷url(無限循環)。我猜你的意思是「每個控制器」的「其他方法」,所以2重定向? –

+0

好吧,你是正確的然後使用$ this-> input-> get('last_url') –

+0

我想我的意思是,你必須在每個控制器中設置flashdata,每次。看起來像一個負擔,但否則這種方法是好的。 –

0

我是用我的控制器的結構下面的代碼時,我就遇到了這個問題:

$this->session->set_userdata(array('last_url' => current_url())); 

我會設置一個圖標,然後過了一段時間我開始注意到我被重定向到favicon .ico使用了last_url的幾個函數。

我最終發現了這個問題。我只是添加favicon.ico到我的htaccess文件,現在它完美的工作。

這裏的的.htaccess線:

RewriteCond $1 !^(index\.php|img|css|js|slider|uploads|robots\.txt|favicon\.ico) 

我希望這可以幫助別人。