首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

php session和post 缓存,如何防止回退

index.html
HTML code
<form action="a.php" method="post"> 密码: <input type="text" name="passwd" /> <input type="submit" value="提交" /> </form>


a.php
PHP code
<?php header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Type:text/html;charset=utf-8"); $passwd=$_POST['passwd']; if($passwd=='xwcmb'){ session_start(); $_SESSION['login']=1; ...... else{ echo '密码错误!'; } ?>


b.php 退出,销毁session
PHP code
<?php header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Type:text/html;charset=utf-8"); session_start(); unset($_SESSION['login']); session_destroy(); echo "Bye!" ?>


其他php页面
PHP code
....... session_start(); if(isset($_SESSION['login'])&&$_SESSION['login']==1){ ...... }else{ echo '非授权访问!'; }


测试正常,在用b.php销毁session后,在ie地址栏访问其他php页面,非授权访问;
在ie地址栏直接输入a.php,也得到密码错误,但是用ie回退访问a.php,却重新获得session访问。

我知道这样程序和结果是符合的,因为访问ie回退访问a.php, post变量可能还有缓存,导致重新生成session。

我想要的是,销毁session后,如何禁止回退访问呢?如何来写程序呢?

期待高人指点,十分感谢
昵称: Ronaldo09  时间: 2011-01-04 12:04:25

该回复于2011-01-04 13:36:00被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#2楼 得分:0回复于:2011-01-04 13:05:18
这个回退没有关系的,看到的只是缓存的东西,并不是实时的数据。只要用户一刷新,就退出了。

这个事是浏览器干的,不是你php干的事
昵称: theZeus  时间: 2011-01-04 12:28:53
php支持页面回退的两种方法,参考链接:http://www.jbxue.com/article/7025.html
昵称: mybaby678  时间: 2013-04-18 19:58:56