Php 基于用户会话的重定向周期

Php 基于用户会话的重定向周期,php,session,redirect,header,logout,Php,Session,Redirect,Header,Logout,我在重定向到页面时遇到问题。它似乎正在多次重定向自身。我有 if(!isset($_SESSION)){ header("location:index.php"); exit(); } 在我的头上。我的标题包含在我的索引页和其他任何地方。我知道,由于它在标题中,它将被重定向到index.php,然后它将一次又一次地修改脚本,这给了我很多问题 我如何防止它在重定向后立即停止操作?或者是否有其他方法检查用户是否已登录,如果未登录,请转到index.php 谢谢 对于初学者,您不应该检查会话数组本身

我在重定向到页面时遇到问题。它似乎正在多次重定向自身。我有

if(!isset($_SESSION)){
header("location:index.php");
exit();
}
在我的头上。我的标题包含在我的索引页和其他任何地方。我知道,由于它在标题中,它将被重定向到index.php,然后它将一次又一次地修改脚本,这给了我很多问题

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


谢谢

对于初学者,您不应该检查会话数组本身是否完整设置。您应该只分配一个或两个索引并对照它们进行检查。这样,您将永远无法逃避重定向,因为您甚至没有机会分配会话

您需要分配类似于
$\u SESSION['authorized']=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();
}

另外,请记住在您希望使用会话的所有页面中,首先调用
会话\u start()

您的
if
语句存在逻辑缺陷

如果会话处理已启动,
$\u会话将存在

如果没有,它就不存在

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


因此,
if
语句是无用的。请阅读。

我想出来了,我知道我的头中有一个if语句,所以当我试图重定向到index.php时,我仍然有那个if语句,并且没有会话,我将在一个永无止境的循环中重定向自己


我所做的只是为index.php创建了一个新的标题

我只是做了$\u会话来节省时间,我确实使用了true或false之类的东西,但问题是它被重定向到一个永无止境的循环中。这是一个架构问题,检查应该以这种方式进行,但您有一些页面可以“自由”地进行检查,或者允许每个人都可以访问登录页面(因此这里没有会话检查!)