我有一个奇怪的问题,我的头重定向成功后password_verify()
这是一个部分从login.php
login。
$sql = "SELECT * FROM formular WHERE email='".$emailUsername."' OR username='".$emailUsername."'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
if (password_verify($password, $row["hash"])) {
if (isset($_POST["remember_me"])) {
$_SESSION["remember_me"] = $emailUsername;
setcookie('remember_me', md5($emailUsername . time()));
$stmt = $conn->prepare("INSERT INTO sessions (id) VALUES (?)");
$stmt->bind_param("s", $_COOKIE["remember_me"]);
$stmt->execute();
if ($stmt->affected_rows) {
}
$stmt->close();
$conn->close();
}
$_SESSION = array(
"login" => true,
"data" => array(
"username" => $row["username"],
"email" => $row["email"],
"time" => time() +10*5
)
);
header('Location: ../home/userarea.php');
exit();
}
else {
$errorField2 = "<div class='"alert alert-danger'">".
"<strong>Whoops!</strong> Wrong entries!".
"</div>";
}
现在,在每个页面的顶部,我都有一个文件,检查会话是否设置,然后将用户重定向到该页。在loginpage上,我有一个 memorber_me复选框,应该在成功输入后设置一个cookie,以便用户不必再次登录并自动重定向他到userarea.php。
在我的情况下,任何用户都可以看到userarea.php
bootstrap.php
ob_start();
if (isset($_SESSION["login"])) {
if ($_SESSION["data"]["time"] >= time()) {
if(isset($_COOKIE["remember_me"])) {
header('Location: ../home/userarea.php');
exit();
}
} else {
header('Location: ../log_reg/login.php');
exit();
}
} else {
//This line here is running my browser into the redirecting error "Page could not be loaded: The called website redirects the request so that it can never be terminated."
#header('Location: ../log_reg/login.php');
#exit();
}
ob_end_flush();
这个文件应该设置一个cookie,如果remember_me
已设置,如果用户刚刚登录,没有检查remember_me
,则设置一个session
我的浏览器允许设置cookie,所以这不是问题。
你的问题在
isset($_SESSION["login"])
在一个无限循环中,所以重定向不会被执行
下面是正确的处理方法:
ob_start();
if (isset($_SESSION["login"])) {
if ($_SESSION["data"]["time"] >= time()) {
if(isset($_COOKIE["remember_me"])) {
header('Location: ../home/userarea.php');
exit();
}
} else {
header('Location: ../log_reg/login.php');
exit();
}
} else {
if (basename($_SERVER["REQUEST_URI"]) == "login.php"){
}
else {
header('Location: ../log_reg/login.php');
}
}
ob_end_flush();