该网页有一个重定向循环

时间:2013-07-30 19:05:52

标签: php

我创建了一个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) 代码有什么问题? 谢谢!

3 个答案:

答案 0 :(得分:3)

[sarcasm on]默默地更新问题总是很棒![讽刺关闭]

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

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

您必须在使用它之前开始会话。

所以目前你总是会重定向到index.php。 如果对会话进行了另一次检查,并且已登录的用户被重定向回member.php,则表明您已找到重定向循环的原因。

答案 1 :(得分:3)

您必须先开始会话,然后才能开始与$_SESSION变量进行交互。将session_start()作为第一行。

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

答案 2 :(得分: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>