2013-03-14 79 views
-1

我正在使用Codeigniter最新版本。我正在做一个使用PHP的Facebook连接。 我跟着phpacademy的视频教程,做了一个Facebook登录。 一切工作正常,但我点击登出后,我调用一个函数注销其做到这一点:避免在点击后进入主页退出后的后退按钮

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

,并激活登录功能,并返回登录查看。但我的问题是,点击浏览器上的“返回”按钮后,我的主页上显示“注销”按钮,并且根本没有刷新。有没有解决这个问题的方法?

+0

那可能来自浏览器缓存,呵呵? – Mahdi 2013-03-14 08:38:24

+0

@Mahdi我似乎不明白,但是当其他网站工作的很好。我的代码中应该有些问题。 – Mirage 2013-03-14 08:40:04

+0

哦,我的坏,我错了... – Mahdi 2013-03-14 08:43:14

回答

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> 

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

+1

我加了这个,还是一样的。任何其他建议? – Mirage 2013-03-14 09:42:13

+1

我添加了这个'header(“Cache-Control:no-store,no-cache,must-revalidate”);'和我的网页顶部的代码一起。非常感谢您的帮助。 – Mirage 2013-03-14 09:53:33

+0

很高兴工作! – 2013-03-14 09:56:01

0

你必须检查通过,如果条件作为用户是否登录或不:

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'); 
    } 
    } 

这将防止从去主页。

,并确保已加载Session库:

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

,如果每一件事情是在上述表述得很好,那么这个语句后在构造函数中写

session_start(); 

尝试

parent::__construct(); 

希望能对您有所帮助!

+0

是的,我加了这个。但仍然当我做'http:// localhost:81/tag/main/logout' ,然后点击返回按钮,我得到我的登录页面。同样的问题。 – Mirage 2013-03-14 08:44:00

+0

它在我的autoload.php中启用 – Mirage 2013-03-14 08:45:49

+2

由于页面正在从浏览器缓存中调用并且未加载,因此无法工作。 – 2013-03-14 09:15:28

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'); 
    } 
+0

这是我家的功能,'公共功能的家用() \t { \t如果($这个 - >会话级>用户数据( 'is_logged_in')){ \t \t \t \t $这个 - >负载>视图( '家'); \t} \t别的 \t { \t \t重定向( '主/ fb_login', '刷新'); \t} \t}' 我在哪里添加这个? – Mirage 2013-03-14 08:53:37

+0

更新了答案 – 2013-03-14 09:16:57

+0

页面正在从浏览器缓存中加载,没有多少代码会将其修复到PHP内部,因为页面在技术上并未再次加载,只是显示已存在的内容。 – 2013-03-14 09:17:58

相关问题