我在让header()
使用此代码初始化时遇到了一些问题。似乎if
语句不适用于查询变量?
在init.php
中定义了函数$user_data
。 $url
是浏览器 url 栏中的$_GET
代码(在本例中为 6 位随机代码(。变量似乎有效,因为我已经尝试输出它们。不过,问题似乎是if
的说法。我没有收到错误消息。即使我没有登录并且 url 在 MySQL 中设置为 public === 0
,header()
也不会启动。我哪里出错了?
include 'core/init.php';
include 'includes/head.php';
$url = $_SERVER['QUERY_STRING'];
$url = sanitize($url);
$public_arr = mysql_query("SELECT `public` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$public_arr = mysql_fetch_assoc($public_arr);
$public = $public_arr['public'];
$owner_arr = mysql_query("SELECT `owner` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$owner_arr = mysql_fetch_assoc($owner_arr);
$owner = $owner_arr['owner'];
global $user_data;
if ($public === 0 AND $owner !== $user_data['username'] || logged_in() === false) {
header('Location: mainpage.php');
exit();
}
$name_arr = mysql_query("SELECT `name` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$name_arr = mysql_fetch_assoc($name_arr);
$name = $name_arr['name'];
假设变量值与您所说的一样,请尝试检查这些 vlaues 是否等于或不相同,有时类型可能会有所不同(像0
这样的整数可能是像 "0"
这样的字符串(。
if ($public == 0 AND $owner != $user_data['username'] || logged_in() === false) {
header('Location: mainpage.php');
exit();
}
正如 @jay-blanchard 所说,您应该使用 MySQLi 函数而不是mysql_*
,原因有很多 - 主要是它们不再作为 PHP 的标准支持!
if ($public === 0 AND $owner !== $user_data['username'] || logged_in() === false)
应该是
if (($public === 0 && $owner !== $user_data['username']) || logged_in() === false)