-1

我创建了一个member.php,只有在用户登录正确的凭据后才能访问此页面。如果不是,它会将它们重定向到index.php. 这是代码

<?
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Prime Time</title>
<link href="member.css" rel="stylesheet" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="loadmessages.js"></script>
<?php
if ($_SESSION['username']){ 
    session_start();
}
else
header('Location:http://website.com/website/index.php');
ob_end_flush();
?>
</head> 

但是,当我运行它时,我收到错误"This webpage has a redirect loop"(Chrome)代码有什么问题?谢谢!

4

3 回答 3

3

[嘲讽]默默更新问题总是好的![嘲讽关]

由于您不会一遍又一遍地重定向到 member.php,因此不会导致错误。

但就像@MikeBrant 所说,你的代码中有另一个:

您必须先启动会话,然后才能使用它。

所以目前你总是重定向到index.php. 如果再次检查会话并且登录的用户被重定向回member.php您已经找到了重定向循环的原因。

于 2013-07-30T19:07:35.310 回答
3

您必须先启动会话,然后才能开始与$_SESSION变量交互。放在session_start()第一行。

正如现在所写,您的条件将始终评估为 false 并导致重定向。现在还不清楚它为什么会循环,除非重定向重定向到它自己。

于 2013-07-30T19:08:00.060 回答
1

试试这样:

<?
session_start();
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Prime Time</title>
<link href="member.css" rel="stylesheet" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="loadmessages.js"></script>
<?php
if (!isset($_SESSION['username'])){ 
    header('Location:http://website.com/website/index.php');   
}   
ob_end_flush();
?>
</head> 
于 2013-07-30T19:14:48.750 回答