如何在退出后重定向到当前网址?
用于退出的HTML:
<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>
控制器功能:
function logout() {
$this->session->sess_destroy();
redirect(base_url());
}
答案 0 :(得分:4)
yAnTar有正确的想法(将最后一个网址存储在当前网址中),但CI网址通常不接受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')
,但我过去曾遇到过这个问题(旧版Google Chrome发送favicon.ico
)并且通常不推荐它
答案 1 :(得分:2)
在退出功能中使用此功能
$this->session->set_flashdata('redirect_url', current_url());
现在用你的另一种方法
if($this->session->flashdata('redirect_url'))
{
$url = $this->session->flashdata('redirect_url');
redirect($url);
}
答案 2 :(得分:1)
您可以像方法注销
中的第一个选项一样添加网址<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>"
你的功能中的下一步
public function logout($url){
redirect(base64_decode($url));
}
答案 3 :(得分:0)
如果您只是要求重定向,那么这样的事情可以帮助解决您的问题。
$url= base_url().'index.php/korisnik/logout';
redirect($url);
从我看到的base_url()
有问题或您遗失了index.php
的网址,请检查。
答案 4 :(得分:0)
当我遇到这个问题时,我在控制器的构造中使用了以下代码:
$this->session->set_userdata(array('last_url' => current_url()));
我设置了一个favicon,然后过了一段时间我开始注意到我在使用last_url的几个函数上被重定向到favicon.ico。
我最终弄明白了这个问题。我刚刚将favicon.ico添加到我的htaccess文件中,它现在运行良好。
这是.htaccess行:
RewriteCond $1 !^(index\.php|img|css|js|slider|uploads|robots\.txt|favicon\.ico)
我希望这有助于其他人。