註銷後如何重定向到當前url?Codeigniter 2.1 - 註銷後重定向到當前url
HTLM用於註銷:
<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>
控制器功能:
function logout() {
$this->session->sess_destroy();
redirect(base_url());
}
註銷後如何重定向到當前url?Codeigniter 2.1 - 註銷後重定向到當前url
HTLM用於註銷:
<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>
控制器功能:
function logout() {
$this->session->sess_destroy();
redirect(base_url());
}
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
)有與問題,通常不推薦它。
您可以添加URL就像方法註銷
<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>"
接下來在函數的第一選擇
public function logout($url){
redirect(base64_decode($url));
}
這不起作用:( – Sasha
如果你只是要求重定向,那麼這樣的事情可以幫助你解決問題。
$url= base_url().'index.php/korisnik/logout';
redirect($url);
從我看到你要麼有base_url()
一些問題,或者你缺少index.php
在URL請檢查。
使用此在註銷功能
$this->session->set_flashdata('redirect_url', current_url());
現在在你的另一種方法
if($this->session->flashdata('redirect_url'))
{
$url = $this->session->flashdata('redirect_url');
redirect($url);
}
註銷函數中的'current_url()'是註銷url(無限循環)。我猜你的意思是「每個控制器」的「其他方法」,所以2重定向? –
好吧,你是正確的然後使用$ this-> input-> get('last_url') –
我想我的意思是,你必須在每個控制器中設置flashdata,每次。看起來像一個負擔,但否則這種方法是好的。 –
我是用我的控制器的結構下面的代碼時,我就遇到了這個問題:
$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)
我希望這可以幫助別人。
它工作得很好,謝謝:) – Sasha