-1

我正在使用 Codeigniter 最新版本。我正在使用 php 进行 facebook 连接。我按照 phpacademy 的视频教程进行了 facebook 登录。一切正常,但是在我点击注销后,我调用了一个函数注销:

$this->session->unset_userdata('is_logged_in');
session_destroy();
redirect('main/fb_login','refresh');

并激活登录功能并返回登录视图。但我的问题是,单击浏览器上的“返回”按钮后,我的主页带有“注销”按钮,并且根本没有刷新。有什么解决方法吗?

4

3 回答 3

2

希望您在视图中使用模板,这将是无痛的,但请确保它位于您不希望通过后退按钮访问的每个页面的头部。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE, NO-STORE, must-revalidate">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT=0>

只是为了解释发生了什么。该页面正在从您的浏览器缓存加载,这意味着浏览器认为您的用户仍处于登录状态。上述行使浏览器在每次加载时重新验证页面,并且不会从其自己的缓存中加载它。

于 2013-03-14T09:16:55.343 回答
0

在主页函数的开头添加以下代码行:

 if(!$this->session->userdata('username')) header('location: main/fb_login');

编辑:尝试以下代码。

    public function home() 
    { 
        if(!$this->session->userdata('username')) header('location: main/fb_login');
        $this->load->view('home');
    }
于 2013-03-14T08:45:58.453 回答
-1

您必须使用 if 条件检查用户是否已登录:

  function homepage(){     
     if($this->session->userdata('is_logged_in')){
        //code for homepage
        $this->load->view('homepage');//there should be file in you view folder homepage.php
     }else{
        redirect('main/fb_login','refresh');
     }
  }

这将阻止进入主页。

并确保您已加载会话库:

  $autoload['libraries'] = array('database', 'session','form_validation');

如果上述陈述中的每件事都很好,那么请尝试编写

 session_start(); 

在此语句之后的构造函数中

 parent::__construct();

希望它会有所帮助!

于 2013-03-14T08:40:40.893 回答