2013-07-30 54 views
-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) 哪些错误的代码? 谢谢!

回答

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> 
3

[上嘲讽]静默更新问题始终是伟大的![嘲讽关闭]

既然你不重定向到member.php一遍又一遍,这将不会导致错误。

但像@MikeBrant说你有另外一个在你的代码:

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

因此,您目前总是重定向到index.php。 如果还有另一个会话检查,并且登录用户重定向回member.php,您已经找到了重定向循环的原因。

+1

我喜欢你的最后一次更新。这很好:D –

+1

@ErmanBelegu:我该说什么?我有点惊讶 –

3

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

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

相关问题