【发布时间】:2014-12-03 08:40:55
【问题描述】:
我正在尝试制作一个身份验证脚本,将已登录/未登录的用户重定向到正确的页面,但它会导致重定向循环。我有两个页面 index.php 具有登录表单和 mobile.php 具有有效用户的内容。对于身份验证,我在 index.php 的第一行有此代码
session_start();
if (isset($_SESSION["username"]) && isset($_SESSION["userid"])) {
header("location: mobile.php");
exit();
}
mobile.php 的第一行是
session_start();
if(!isset($_SESSION["username"])){
header("location: index.php");
}
但我不知道它为什么会导致重定向循环。 这是一些屏幕截图。 谢谢你的时间。
以下是 index.php 中的一些代码,这些代码行后面是登录表单。在验证函数中,我所做的只是检查用户名和密码是否有效,如果是,则重新生成会话 ID,并设置会话变量用户名和用户 ID。并返回 true。
if(isset($username) && isset($password)){
$username = preg_replace('/[^a-zA-Z0-9]/', '', $username);
$password = preg_replace('/[^a-zA-Z0-9]/', '', $password);
$returnmsg = validate($username,$password);
if($returnmsg===true){
// header("location: mobile.php");
exit;
} else {
$returnmsg = 'Invalid username or password.';
}
}
【问题讨论】:
-
在 index.php 中重定向后添加
exit();。同时在 index.php 中转储 session 变量而不进行重定向 -
对我来说很好用!它必须在其他代码行中
-
在清除所有 cookie 并重新启动浏览器后,我使用了 var_dump($_SESSION);在 session_start() 之后;结果是空数组。所以索引页面不应该重定向并继续,但它确实重定向,为什么?
-
@rkrara 你必须向我们展示更多代码!
-
你在 index.php 中还有其他地方使用过 header() 吗?或者包含一个使用 header() 的页面?从症状看来,您可能不小心将代码块(来自 mobile.php)放入 index.php 或以某种方式被执行。你可以在 mobile.php 中的 header() 之前放置一个回显吗?
标签: php