繁体   English   中英

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

[英]redirecting cycle based on user session

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

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

在我的标题中 我的标头包含在我的索引页和其他地方。 我知道,因为它在标题中,它将被重定向到index.php,然后它将再次脚本反复执行,这给了我一些问题。

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

谢谢!

对于初学者,您不应该检查SESSION数组本身是否已完整设置。 您应该只分配一个或两个索引并对其进行检查。 这样,您将永远不会逃脱重定向,因为您甚至都没有可能分配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()

if语句仅存在逻辑缺陷。

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

如果不是,则不存在。

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

因此, if语句是无用的。 请阅读PHP手册,以了解会话如何在PHP中工作

我弄清楚了,我知道我的标头中有一个if语句,所以当我尝试重定向到index.php时,我仍然有if语句但没有会话,我将要重定向自己在一个永无止境的循环中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM