基于用户会话重定向周期

时间:2011-10-01 07:01:50

标签: php session redirect header logout

我在重定向到网页时遇到问题。似乎它多次重定向自己。我有

if(!isset($_SESSION)){
header("location:index.php");
exit();
}

在我的标题中。我的标题包含在我的索引页面和其他任何地方。我知道,因为它在标题中,它将被重定向到index.php然后它会再次出现脚本并且反复给我带来问题。

如何防止它在重定向后立即停止执行?或者是否有其他方法来检查用户是否已登录,如果没有,请转到index.php?

谢谢!

3 个答案:

答案 0 :(得分:0)

对于启动器,您不应该检查SESSION数组本身是否完整设置。您应该只分配一个或两个索引并检查它们。通过这种方式,您将无法逃脱重定向,因为您甚至无法分配会话。

您需要在成功登录时指定$_SESSION['authorized'] = TRUE; 之类的内容,然后在每个页面上检查是否已设置此索引,为TRUE,并采取相应措施。 此外,您应该重定向到登录页面,或类似的东西......您应该给实际登录用户的可能性!除非您的登录表单不在索引页面中,当然,但您没有指定该信息...

if(isset($_SESSION['authorized']) AND ($_SESSION['authorized'] === TRUE)
{
   //ok, user is logged. Redirect somewhere else? Do something specific?
}
else
{
   header("Location:index.php"); // or redirect to login.php, for example
   exit();
}

此外,请记住在您希望使用会话的所有网页中首先调用session_start()

答案 1 :(得分:0)

你的if陈述只是一个逻辑缺陷。

如果会话处理已经开始,则$_SESSION将存在。

如果没有,则不存在。

但这与您/用户是否使用会话无关。

所以if语句没用。请阅读PHP Manual to learn how sessions work in PHP

答案 2 :(得分:0)

我想通了,我知道我的标题中有一个if语句,所以当我试图重定向到index.php时,我仍然有if语句而没有会话,我要去将自己重定向到一个永无止境的循环中。

我所做的只是为index.php

创建了一个新标题