Php 登录后按“后退”按钮时,将登录用户重定向到主页

Php 登录后按“后退”按钮时,将登录用户重定向到主页,php,codeigniter,Php,Codeigniter,我目前正在学习使用codeigniter作为框架的MVC基础知识,并创建了一个登录页面。现在,我已经在用户登录并存储会话数据后重定向了用户,但问题是在我登录(在中,我重定向到另一个页面)后,按下后退按钮,登录页面仍会显示,除非我在地址栏中突出显示URL,并按下enter键,然后我再次返回重定向页面。我知道这是因为我做了会话检查,但我需要一个解决方案,告诉用户如何解决这个问题,除非他注销,否则不要再次返回登录页面。对于已注销的用户,除非他/她再次登录,否则不要返回到某个页面 更详细地说,我希望发生

我目前正在学习使用codeigniter作为框架的MVC基础知识,并创建了一个登录页面。现在,我已经在用户登录并存储会话数据后重定向了用户,但问题是在我登录(在中,我重定向到另一个页面)后,按下后退按钮,登录页面仍会显示,除非我在地址栏中突出显示URL,并按下enter键,然后我再次返回重定向页面。我知道这是因为我做了会话检查,但我需要一个解决方案,告诉用户如何解决这个问题,除非他注销,否则不要再次返回登录页面。对于已注销的用户,除非他/她再次登录,否则不要返回到某个页面

更详细地说,我希望发生的事情就像在facebook登录中一样,在您登录并单击浏览器上的后退按钮后,facebook仍会将您重定向到您的主页,而不是登录页面。samething将进入注销

这是我的控制器,到目前为止,我想这解释了一切。如果我在代码中做了一些冗余,请纠正我,并理解我是这方面的新手。:)


首先,检查您可以使用的会话数据:

$this->session->userdata('item');
这里

也许您可以在索引开始处设置1个检查,如下所示:

if($this->session->userdata('username'))
redirect('news');
在调用这些函数之前,不要忘记加载所需的所有帮助程序和库


对于会话检查

如果您不想在成功登录后进入登录页面,您可以在登录页面中测试会话,并在设置了会话的情况下重定向到其他页面。试试这个代码

if ($data['session']['username']) != NULL) {
    redirect('home_page','refresh');
}

这个问题在这里已经解决了:Hashem Qolami提出了相同的问题,但角度不同。

back按钮显示浏览器缓存的页面。那么我应该清除缓存的页面吗?但是我不认为这是一个合适的解决方案。我认为正如上面Arun Killu的评论所说,后退按钮是一个基于浏览器历史的缓存页面。因此,在我按下后退按钮后,页面不会重新加载页面。不管怎样,我也会尝试一下你的答案,不幸的是,它不起作用。谢谢,我稍后会尝试这个。我会在事后向你反馈。我已经回复了发布的代码。我尝试在index.php页面中添加您的代码,它返回一个关于$this无效使用的错误。我还尝试在我的登录控制器中添加您的代码,但仍然发生了相同的情况。我不太确定你提到的所有helper和lib的加载情况,但我想我已经在config中的autoload文件中完成了,这是一个$autoload['libraries']=array('database','session');正确吗?是的,检查配置文件(有会话设置和所需的随机secretkey),我已经设置好了。:)我认为,在将数组传递给会话数据之前,这一部分是需要的,codeigniter确实需要它,即使正如我所读的文档所说,您不需要它。
if($this->session->userdata('username'))
redirect('news');
if ($data['session']['username']) != NULL) {
    redirect('home_page','refresh');
}