piy*_*ush 11 javascript php jquery
我不希望用户在注销后单击后退按钮返回到安全页面.在我的注销代码中,我取消了会话并重定向到登录页面.但是,我认为浏览器正在缓存页面,因此尽管会话从注销中被销毁,它仍然可见.
我可以通过不允许浏览器缓存来避免这种情况
header("Cache-Control", "no-cache, no-store, must-revalidate")
但这样我就失去了浏览器缓存的优势.
请建议一个更好的方法来实现这一目标.我觉得,必须有一种方法来处理这个由javascript客户端
Jon*_*ler 10
用PHP而不是javascript实现它.
在每个页面的顶部,检查用户是否已登录.如果没有,则应将其重定向到登录页面:
<?php
if(!isset($_SESSION['logged_in'])) :
header("Location: login.php");
?>
Run Code Online (Sandbox Code Playgroud)
正如您所提到的,在注销时,只需取消设置logged_in会话变量,然后销毁会话:
<?php
unset($_SESSION['logged_in']);
session_destroy();
?>
Run Code Online (Sandbox Code Playgroud)
如果用户现在单击后退,则没有logged_in会话变量可用,并且页面将不会加载.
我遇到了同样的问题,花了一整天的时间才弄清楚,最后纠正如下:
在登录验证脚本中,如果用户通过身份验证,请设置一个会话值,例如如下:
$_SESSION['status']="Active";
Run Code Online (Sandbox Code Playgroud)
然后在用户配置文件脚本中放置以下代码片段:
<?php
session_start();
if($_SESSION['status']!="Active")
{
header("location:login.php");
}
?>
Run Code Online (Sandbox Code Playgroud)
上面的代码所做的是,仅当$_SESSION['status']
设置为"Active"
then only 它才会转到用户配置文件,并且此会话密钥将设置为"Active"
仅当用户通过身份验证时... [注意否定 [' !'] 在上面的代码片段中]
大概注销代码应该如下:
{
session_start();
session_destroy();
$_SESSION = array();
header("location:login.php");
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...!!!
归档时间: |
|
查看次数: |
67572 次 |
最近记录: |