index.html
<form action="a.php" method="post">
密码:
<input type="text" name="passwd" />
<input type="submit" value="提交" />
</form>a.php
<?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
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页面 .......
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后,如何禁止回退访问呢?如何来写程序呢?期待高人指点,十分感谢
<form action="a.php" method="post">
密码:
<input type="text" name="passwd" />
<input type="submit" value="提交" />
</form>a.php
<?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
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页面 .......
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后,如何禁止回退访问呢?如何来写程序呢?期待高人指点,十分感谢
那么我想做到,销毁session后,无论是用户在地址栏直接访问,还是用浏览器后退按钮,都无法访问注销前的内容,这种体验如何实现呢,十分感谢
以下为说明:pragma与no-cache 属性值 -- 定义页面缓存
pragma与no-cache用于定义页面缓存
pragma出现在http-equiv属性中,使用content属性的no-cache值表示是否缓存网页
引用网址:http://www.dreamdu.com/xhtml/no-cache/
不缓存页面(为了提高速度一些浏览器会缓存浏览者浏览过的页面,通过下面的定义,浏览器一般不会缓存页面,而且浏览器无法脱机浏览.)pragma
<meta http-equiv="pragma" content="no-cache" />
已经在php输出头加上了,示例中有啊
1.php页面,密码正确,显示内容,启用session。
2.密码不正确,查看session变量存在,依旧显示内容(主要用在刷新本页更新内容上)
3.密码不正确并且session变量不存在,提示密码错或者非法登录 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'];
session_start();
if(isset($_SESSION['login'])||$passwd=='xwcmb'){
$_SESSION['login']=1;
.......
}elseif(!isset($_SESSION['login'])){
echo '非法登录!';
echo isset($_SESSION['login']).'_'.$passwd;
}elseif($passwd!='xwcmb'){
echo '密码错误!';
echo isset($_SESSION['login']).'_'.$passwd;
}做了一些尝试,发现销毁session后,用ie回退,提示刷新,php再刷新后,之前的POST变量值,还是存在的,导致页面又可以看到内容,如何销毁session时,也把POST变量值清空,也就是禁用POST缓存。
应该是这样的
1.html登录到logon.php
2.logon.php判断密码,是否启用session,跳转正确或错误的页面。
3.内容php页面,启用session,判断是否合法。
4.session销毁页面,并跳转。我想的比较简单
1.html登录到内容php页面。
2.内容php页面,判断密码,是否启用session,是否显示内容。
3.session销毁页面。第二种方法,我在想是否能够行的通,只要能够禁用或者清除POST缓存,应该是可以的。
在刷新php页面的时候,html传递过来的POST值依然存在
有没有这种可能
1.html链接过来的,POST正常。
2.php单独刷新,POST缓存为空。
这个东东type="text"最好改改 type="password" 这样是最简单的防密码外泄的