我有一个登录页面,然后我创建了一个指向名为 logout 的页面的链接,它包含以下代码:
注销.php
<?php
session_unset();
session_destroy();
header("Location:");
?>
然而,当我注销然后点击后退按钮时,它会带我回来。如何更改它,以便在显示上一页之前要求您再次登录?
我有一个登录页面,然后我创建了一个指向名为 logout 的页面的链接,它包含以下代码:
注销.php
<?php
session_unset();
session_destroy();
header("Location:");
?>
然而,当我注销然后点击后退按钮时,它会带我回来。如何更改它,以便在显示上一页之前要求您再次登录?
在您要返回的页面(或与此相关的任何页面)上,您需要检查用户是否已登录(即具有有效会话),如果没有,则将其重定向到登录页面。
此外,向这段特定的代码添加一些无缓存标头可能会有所帮助。
您尚未设置任何要重定向到的位置。
应该:
header("Location:http://example.com/login.php");
这样,当您注销时,它会将浏览器重定向到 login.php。
编辑:
此外,将会话验证条件添加到您的主页会有所帮助。
像这样的东西:
if(!isset($_SESSION))
{
header("Location:http://example.com/login.php");
}
如果用户已登录,请尝试检查每个页面
if (!$_SESSION['logged_in']) { //you would have to make $_SESSION['logged_in'] when they login
header('location: login.php');
}
所有这一切都是说如果 $_SESSION['logged_in'] 未设置将它们重定向到登录页面。
您还需要进行其他检查以确保其安全。
在加载每个页面(或至少每个 PRIVATE/RESERVED 页面)之前,您应该检查 $_SESSION 变量以确定用户是否合法登录。
如果您不执行此检查,那么每个人都可以访问您网站的每个页面,只要他们有指向它的直接链接。他们可能会看到页面的损坏版本,但仍然授予未登录用户访问权限。
<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
?>
来源:手册