我有一个带有用户名和密码的日志系统,在用户使用用户名和密码登录后,如果我按下后退按钮,它会将我重定向到登录页面。如何在php中防止这种情况?
问问题
1201 次
3 回答
4
首先,您要使页面过期并防止它们被浏览器缓存:
<?
//Set no caching
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
其次,您应该检查用户是否已登录,如果已登录,请将其重定向回上一页,如下所示:
// SET REFERRER
function strleft($s1, $s2) {
return substr($s1, 0, strpos($s1, $s2));
}
function selfURL() {
if(!isset($_SERVER['REQUEST_URI'])) {
$serverrequri = $_SERVER['PHP_SELF'];
}
else {
$serverrequri = $_SERVER['REQUEST_URI'];
}
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$_SESSION['ref'] = $protocol."://>/".$_SERVER['SERVER_NAME'].$port.$serverrequri;
}
selfURL();
然后
header("Location: " . $_SESSION['ref']);
于 2013-03-01T06:55:01.020 回答
0
您必须检查用户的会话。当会话存在时给出用户已经登录的警告或将用户重定向到 index.php 或其他东西。
于 2013-03-01T06:46:16.157 回答
0
根据您的评论,您建议您真正要问的问题是如何禁用后退按钮?
这在 php 中绝对是不可能的,我认为可能根本不可能,因为它是由浏览器控制的。JavaScript 为您提供了一些控制,因此您可能会找到忽略或禁用按钮的代码。
谷歌搜索“JavaScript 禁用后退按钮”应该会给你一些结果。
于 2013-03-01T06:57:19.540 回答