-3

我希望将上面的所有代码放在我包含的 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();

4

3 回答 3

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 应该没有这个功能。

于 2013-08-16T10:30:38.357 回答
0

在 login.php 中包含标头之前,请执行以下操作:

$logging_in = true;

然后,修改标题

if(!isset($_SESSION["loggedin"])){

if(!isset($_SESSION["loggedin"]) && !isset($logging_in))
于 2013-08-16T10:32:34.817 回答
-2

在您的登录页面中,您可以检查用户是否已经登录并将他们重定向到正确的页面。

<?php
 if( userIsLoggedIn ){
  //redirect to main page page or logout them forcefully
 }
?>

//your login form can go here
于 2013-08-16T10:28:33.327 回答