Codeigniter 2.1 - 注销后重定向到当前URL

时间:2012-06-19 10:38:54

标签: php codeigniter

如何在退出后重定向到当前网址?

用于退出的HTML:

<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>

控制器功能:

function logout() { 
        $this->session->sess_destroy();
        redirect(base_url()); 
    }

5 个答案:

答案 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)

我希望这有助于其他人。