用户未登录时的PHP无限循环
我对这段代码有一个无限循环的问题。它检查是否有会话变量,如果没有,我希望它们被重定向到索引页用户未登录时的PHP无限循环,php,session,loops,header,infinite,Php,Session,Loops,Header,Infinite,我对这段代码有一个无限循环的问题。它检查是否有会话变量,如果没有,我希望它们被重定向到索引页 session_start(); if (! isset($_SESSION['foo'])) { header('Location: /index.php'); } exit; 我试着把出口打开;和退出();和endif;在if循环的外部和内部,所有这些都给了我无限循环的问题。该代码位于标题页中,然后在每个页面上调用该标题页,因此只有在未登录的情况下才能访问索引页。这就是为什么
session_start();
if (! isset($_SESSION['foo'])) {
header('Location: /index.php');
}
exit;
我试着把出口打开;和退出();和endif;在if循环的外部和内部,所有这些都给了我无限循环的问题。该代码位于标题页中,然后在每个页面上调用该标题页,因此只有在未登录的情况下才能访问索引页。这就是为什么我希望这个代码首先存在的要点
提前感谢您的帮助。如果您在索引页上进行了检查,则在未设置会话时,它将重定向循环。您需要确保没有对index.php进行此检查,并在if语句中添加排除index.php页面的内容。差不多
if(! isset($_SESSION['foo']) && strpos($_SERVER['REQUEST_URI'], 'index.php') === false) {
header('Location: /index.php');
}
我想你只是错过了一节课 page.php:
<?php
session_start(); // this is important
if (! isset($_SESSION['foo'])) {
header('Location: /index.php');
exit;
}
?>
index.php:
<?php
session_start(); // this is important
//stuff
$_SESSION['foo'] = 'stuff';
//other stuff
?>
您提到此代码位于每页的标题页上。如果此代码也位于索引页上,那么索引页也将检查会话变量,从而导致无限循环,我不会像那样测试请求\u uri。。。只需执行http://example.com/realpage.php?haha_Im_in_ur_sitez=index.php
非常感谢。我明白你想说什么。我会按照你的答案去做,并相应地修改我的代码。虽然Marc说不要像这样使用请求uri,但我会看看这是否有效。我只是忘了在代码中包含它。我很抱歉。我把它放在if声明之前,就像你一样。非常感谢你!你太棒了:基本上你上面的答案就是这么说的。因此,如果您来自索引,则不应执行重定向。非常感谢。