我一直在用這個代碼初始化header()
時遇到一些問題。看起來if
語句不適用於查詢變量?PHP和MySQL;如果帶查詢變量的語句不起作用
在init.php
中定義了函數$user_data
。 $url
是瀏覽器url-bar中的$_GET
代碼(在這種情況下是6位數的隨機代碼)。這些變量似乎起作用,因爲我試圖輸出它們。但問題似乎是if
聲明。我沒有收到錯誤消息。 header()
只是不會啓動,即使我沒有登錄並且在MySQL中URL設置爲public === 0
。我哪裏錯了?
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'];
http://php.net/manual/en/function.error-reporting.php - 如果頭不工作,那麼'如果($公衆= == 0 AND $ owner!== $ user_data ['username'] || logged_in()=== false)''你失敗了,並且/或者你在header之前輸出。 –
嘗試'if($ public === 0 AND($ owner!== $ user_data ['username'] || logged_in()=== false)){'或'if(($ public === 0 AND $ owner!== $ user_data ['username'])|| logged_in()=== false){',取決於你在做什麼。您應該在代碼中澄清,以避免問題,以及您希望'''參數的行爲方式。你是否也可以編輯你的問題來澄清'$ public'和'$ owner'具有什麼值?另外,使用'die('this works');'檢查這個條款是否被捕獲。 (對於長評論感到抱歉!)。 – Egg
@Egg謝謝你的回答。虛擬我用===比較'0'與0.我修復它,它工作得很好。祝你有個美好的一天:) – EthanBilly