登录页面上的会话重定向循环解决方法

时间:2013-08-16 10:24:03

标签: php

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

3 个答案:

答案 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