【问题标题】:Codeigniter: How can I redirect to home when user click on back button after logout?Codeigniter:当用户在注销后单击后退按钮时,如何重定向到主页?
【发布时间】:2012-07-17 04:52:50
【问题描述】:

我正在使用 Codeigniter,我的问题是一样的 How can I redirect to home when user click on back button after logout?

我在 views/header.php 和 controller top 中尝试了以下代码,但没有任何进展..!

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

我也试过

  /* @author: Muhammad Sajid
   * @name: do_logout
   */
    public function do_logout()
    {
        $this->session->sess_destroy();
        $this->clearCache();
        redirect("login/index/0");
    }

    //+ Jonas Raoni Soares Silva
    //@ http://jsfromhell.com
    public function clearCache(){
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: no-store, no-cache, must-revalidate');
        header('Cache-Control: post-check=0, pre-check=0', false);
        header('Pragma: no-cache');
    }

但没有找到解决方案....

【问题讨论】:

  • 您为什么担心这个问题?因为如果你让你的控制器登录保护页面(点击后退按钮后)将消失(假设你重定向到登录页面如果没有登录)一旦用户刷新页面,如果你知道我的意思..
  • 使用重定向('','你的位置');安装重定向(“登录/索引/0”);在路由中,或stackoverflow.com/a/2267257/1568236用户base_url

标签: php codeigniter


【解决方案1】:

您能否指定...更多,因为后退按钮只会将您带到可能是也可能不是主页的上一页... 一种简单的重定向用户的方法可以是

redirect(http://localhost/.....想要的url);

我曾经有一个问题,我想在用户登录后将用户重定向到上一页,但问题是上一页是登录表单,而不是用户用于登录的页面表格

解决方案我通过

将所需的页面地址添加到会话中

$this->session->set_userdata('redirect', current_url());

然后在登录后重定向用户

$redirect = $this->session->userdata('redirect');
重定向($redirect);

【讨论】:

  • 请先了解我的问题,我不是在询问登录后的重定向。我谈到了注销后用户无法使用浏览器返回按钮返回上一个屏幕。
【解决方案2】:

这个问题很可能会用 javascript 解决,因为使用后退按钮时不会执行 php。

在每个页面加载时运行一个 ajax 来简单地检查您是否已登录,如果没有则相应地重定向。

或者您可以在单击注销按钮时这样做。

<script type="text/javascript">
    window.open('http://example.com/do_logout');
    self.close();
</script>

我不完全确定是否所有浏览器都支持它,但理论上这会打开一个新标签页,关闭当前标签页,从而消除“返回”的可能性。

【讨论】:

    【解决方案3】:

    您可以使用以下元标记控制缓存:

    <META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    

    有关详细信息,请访问此链接: http://www.i18nguy.com/markup/metatags.html

    【讨论】:

      【解决方案4】:

      这对我很有效!!!

      <?php
         if ( ! defined('BASEPATH')) exit('No direct script access allowed');
      
         class admin extends CI_Controller
         {
            public function __construct()
            {
                parent::__construct();
                $this->no_cache();
            }
      
            protected function no_cache()
            {
                header('Cache-Control: no-store, no-cache, must-revalidate');
                header('Cache-Control: post-check=0, pre-check=0',false);
                header('Pragma: no-cache'); 
            }
         }
      

      【讨论】:

        猜你喜欢
        • 2011-07-08
        • 2011-10-09
        • 2013-10-01
        • 2020-04-16
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 2017-05-23
        相关资源
        最近更新 更多