1

我有这个代码的无限循环问题。它正在检查是否有会话变量,如果没有,我希望它们被重定向到索引页面。

session_start();
   if (! isset($_SESSION['foo'])) {
     header('Location: /index.php');
   }
exit;

我试过放出口;和退出();和 endif;在 if 循环之外和内部,所有人仍然给我无限循环的问题。此代码位于标题页中,然后在每个页面上调用,因此您只能在未登录的情况下访问索引页。这就是为什么我希望此代码首先存在的要点。

提前谢谢你的帮助。

4

3 回答 3

3

在 if 语句中添加一些将排除 index.php 页面的内容。就像是

if(! isset($_SESSION['foo']) && strpos($_SERVER['REQUEST_URI'], 'index.php') === false) {
    header('Location: /index.php');
}
于 2013-10-09T20:09:28.737 回答
0

如果您在索引页面上进行检查,则只要未设置会话,它将重定向循环。您需要确保未对 index.php 进行此检查

于 2013-10-09T20:09:04.887 回答
0

我认为您只是缺少 session_start();

page.php:

<?php
session_start(); // this is important
if (! isset($_SESSION['foo'])) {
    header('Location: /index.php');
    exit;
}
?>

索引.php:

<?php
session_start(); // this is important

//stuff

$_SESSION['foo'] = 'stuff';

//other stuff
?>
于 2013-10-09T20:12:11.230 回答