0

注销后如何重定向到当前网址?

用于注销的 HTLM:

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

控制器功能:

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

5 回答 5

4

yAnTar有正确的想法(将最后一个 url 存储在当前的 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'),但我在过去遇到过问题(旧版本的 Google Chrome 发送favicon.ico)并且通常不推荐它。

于 2012-06-19T11:16:25.843 回答
2

在注销功能中使用它

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

现在用你的另一种方法

if($this->session->flashdata('redirect_url'))
{
   $url = $this->session->flashdata('redirect_url');
   redirect($url);
}
于 2012-06-19T11:18:08.193 回答
1

您可以像方法注销中的第一个选项一样添加 url

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

下一步在你的功能

public function logout($url){
    redirect(base64_decode($url));
}
于 2012-06-19T10:41:16.390 回答
0

如果您只要求重定向,那么这样的事情可以帮助您解决问题。

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

从我看到的你base_url()有一些问题或者你index.php在 URL 中丢失,请检查。

于 2012-06-19T11:12:05.577 回答
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)

我希望这对其他人有帮助。

于 2013-06-12T11:50:57.297 回答