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