Php 代码中的Bug正在折磨我
问题是,即使在我清除cookies之后,它仍然显示页面,这是我的第一个if语句应该处理的。代码如下: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
<?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。这将在学校使用,所以我认为没有人对它感兴趣。但是谢谢你的提示!