我在重定向到网页时遇到问题。似乎它多次重定向自己。我有
if(!isset($_SESSION)){
header("location:index.php");
exit();
}
在我的标题中。我的标题包含在我的索引页面和其他任何地方。我知道,因为它在标题中,它将被重定向到index.php然后它会再次出现脚本并且反复给我带来问题。
如何防止它在重定向后立即停止执行?或者是否有其他方法来检查用户是否已登录,如果没有,请转到index.php?
谢谢!
答案 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
创建了一个新标题