代码中的错误是杀了我

时间:2012-03-01 18:12:23

标签: php

问题是,即使在我清除了我的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>";
}
?>

4 个答案:

答案 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;
}