Php 代码中的Bug正在折磨我

Php 代码中的Bug正在折磨我,php,Php,问题是,即使在我清除cookies之后,它仍然显示页面,这是我的第一个if语句应该处理的。代码如下: <?php include('/Applications/MAMP/htdocs/premind/includes/vars.php'); if (!isset($_COOKIE['emailaddress'])) { header("location:/premind/notloggedin.php"); } mysql_connect("$host", "$username

问题是,即使在我清除cookies之后,它仍然显示页面,这是我的第一个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>";
}
?>

试试看

可能还想检查一下!空()以防万一

此外:

这里不需要引用

mysql_connect($host, $username, $password);
很好

另一方面,正如ComFreek提到的,Cookie并不是授权用户的安全方式。

试试看

可能还想检查一下!空()以防万一

此外:

这里不需要引用

mysql_connect($host, $username, $password);
很好

另一方面,正如ComFreek提到的,Cookie并不是授权用户的安全方式。

您需要在header语句之后执行
die()
。如果页面随后出现,
位置
标题意味着什么

if (!isset($_COOKIE['emailaddress'])) {
    header("location:/premind/notloggedin.php");
    die();
}
您需要在header语句之后执行
die()
。如果页面随后出现,
位置
标题意味着什么

if (!isset($_COOKIE['emailaddress'])) {
    header("location:/premind/notloggedin.php");
    die();
}
我想在那里

  • 应该是位置和url之间的空格
  • 尝试使用完整域
因此,请尝试以下代码

<?php
if (!isset($_COOKIE['emailaddress'])) {
    header("location: http://" . $_SERVER['HTTP_HOST'] . "/premind/notloggedin.php");
    exit();
}
我想有

  • 应该是位置和url之间的空格
  • 尝试使用完整域
因此,请尝试以下代码

<?php
if (!isset($_COOKIE['emailaddress'])) {
    header("location: http://" . $_SERVER['HTTP_HOST'] . "/premind/notloggedin.php");
    exit();
}


就实施而言,我同意@Robus。您还应该验证
include('/Applications/MAMP/htdocs/premind/includes/vars.php')
没有打印出任何内容,而且在
之前没有任何空白,就实现而言,我同意@Robus。您还应该验证
include('/Applications/MAMP/htdocs/premind/includes/vars.php')
没有打印任何内容,并且在
检查strlen($_COOKIE['emailaddress'])<1之前没有任何空白。请不要使用COOKIE授权用户,他们可以简单地添加和编辑它们!是的,我试过strlen(),同样的结果@ComFreek好吧,我在会话中也遇到了同样的问题。1.确保在
E_ALL
上有
错误报告
,可能您的
标题
功能出于某种原因无法工作。2.尝试在
IF
之前回显
cookie的值,并与我们共享输出。您能使用更有意义的标题吗?您是否尝试过检查strlen($_COOKIE['emailaddress'])<1?请不要使用COOKIE授权用户,他们只需添加和编辑即可!是的,我试过strlen(),同样的结果@ComFreek好吧,我在会话中也遇到了同样的问题。1.确保在
E_ALL
上有
错误报告
,可能您的
标题
功能出于某种原因无法工作。2.尝试在
IF
之前回显
cookie的值,并与我们共享输出。您能使用更有意义的标题吗?在这种情况下,
die()
是否优于
exit()
?不,没有区别@科林:好吧,twodie()和exit()之间没有什么有意义的区别,它们都使页面空白。谢谢——我想我本可以查一下的。我没有意识到这有那么简单。在这种情况下,
die()
exit()
更受欢迎吗?不,没有区别@科林:好吧,twodie()和exit()之间没有什么有意义的区别,它们都使页面空白。谢谢——我想我本可以查一下的。我没有意识到这有那么简单。尝试了empty(),并使用exit()函数。空调用没有执行任何操作,exit()使页面变为空白。那么isset就可以了。注意我对header()所做的更改,应用它并重试是的,我做了更改。非常感谢。然而,同样的结果。这真的很奇怪。因为我知道cookie不见了,但它仍然认为它在那里。如果页面用exit()变为空白,则它会确认cookie不在那里。我尝试使用会话,但我遇到了相同的问题,因此我尝试使用cookie。这将在学校使用,所以我认为没有人对它感兴趣。但是谢谢你的提示!已尝试使用exit()函数清空()。空调用没有执行任何操作,exit()使页面变为空白。那么isset就可以了。注意我对header()所做的更改,应用它并重试是的,我做了更改。非常感谢。然而,同样的结果。这真的很奇怪。因为我知道cookie不见了,但它仍然认为它在那里。如果页面用exit()变为空白,则它会确认cookie不在那里。我尝试使用会话,但我遇到了相同的问题,因此我尝试使用cookie。这将在学校使用,所以我认为没有人对它感兴趣。但是谢谢你的提示!