问题是,即使在我清除了我的cookie之后,它仍然显示页面,我的第一个if语句应该处理。这是代码:
<?php
include('/Applications/MAMP/htdocs/premind/includes/vars.php');
if (!isset($_COOKIE['emailaddress'])) {
header("location:/premind/notloggedin.php");
}
mysql_connect("$host", "$username", "$password");
mysql_select_db($db_name) or die(mysql_error());
$sql4 = 'SELECT `aname`, `date`, `useremail`, `aid` FROM `data`';
$result4 = mysql_query($sql4) or die("<br />" . mysql_error());
$countrows2 = mysql_num_rows($result4);
if (!$result4) {
echo "Cannot show assignments!";
}
while ($row = mysql_fetch_array($result4)) {
if ($row['useremail'] == $_COOKIE['emailaddress']) {
echo $row['aid'] . ". " . $row['aname'] . " -- " . $row['date'] . "<br />";
echo "<br />";
}
elseif ($countrows2 == 0) {
echo "<h1>No assignments found!</h1>";
}
}
if ($countrows2 == 0) {
echo "<h1>No assignments found!</h1>";
}
?>
答案 0 :(得分:4)
尝试
if (!isset($_COOKIE['emailaddress'])) {
header("Location: /premind/notloggedin.php");
exit();
}
可能还想检查!empty()以防万一。
此外:
mysql_connect("$host", "$username", "$password");
此处不需要引号。
mysql_connect($host, $username, $password);
很好
另外,正如ComFreek所提到的,Cookie不是授权用户的安全方式。
答案 1 :(得分:1)
我认为
请尝试以下代码
<?php
if (!isset($_COOKIE['emailaddress'])) {
header("location: http://" . $_SERVER['HTTP_HOST'] . "/premind/notloggedin.php");
exit();
}
让我知道它是否有效。
答案 2 :(得分:0)
在header语句之后需要die()
。如果页面随后出现,Location
标题就没有任何意义。
if (!isset($_COOKIE['emailaddress'])) {
header("location:/premind/notloggedin.php");
die();
}
答案 3 :(得分:0)
就实施而言,我同意@Robus。您还应验证include('/Applications/MAMP/htdocs/premind/includes/vars.php');
是否未打印任何内容,并且您的<?php
标记前没有任何空格。
您可以使用headers_sent函数来确定问题是否确实与标题相关
if (!headers_sent($filename, $linenum)) {
header("Location: /premind/notloggedin.php");
exit();
} else {
echo "Headers already sent in $filename on line $linenum";
exit;
}