我希望将所有代码放在我包含的header.php中。
标题的前几行有:
<?php session_start();
if(!isset($_SESSION["loggedin"])){
header("Location: login.php");
exit;}
?>
这样做的不幸后果是,当用户被重定向到login.php时,他们会遇到重定向循环。
最好的方法是沿着伪创建一个If语句:
if (page="login.php")
{
//do not redirect to login.php
}
在session_start();
之前?
答案 0 :(得分:0)
您可以包装代码
if(!isset($_SESSION["loggedin"])){
header("Location: login.php");
exit;}
在以下功能中:
function ensureLoggedIn()
{
if (!isset($_SESSION["loggedin"]))
{
header("Location: login.php");
exit;
}
}
然后从需要验证的所有页面调用此函数。
如果用户未登录,例如在secretpage.php上调用此函数将重定向到login.php。
Login.php不应该有这个功能。
答案 1 :(得分:0)
在login.php中包含标题之前,请执行以下操作:
$logging_in = true;
然后,修改标题
if(!isset($_SESSION["loggedin"])){
到
if(!isset($_SESSION["loggedin"]) && !isset($logging_in))
答案 2 :(得分:-2)
在您的登录页面中,您可以检查用户是否已登录并将其重定向到正确的页面。
<?php
if( userIsLoggedIn ){
//redirect to main page page or logout them forcefully
}
?>
//your login form can go here