2016-02-16 68 views
0

我一直在用這個代碼初始化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']; 
+2

http://php.net/manual/en/function.error-reporting.php - 如果頭不工作,那麼'如果($公衆= == 0 AND $ owner!== $ user_data ['username'] || logged_in()=== false)''你失敗了,並且/或者你在header之前輸出。 –

+0

嘗試'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

+0

@Egg謝謝你的回答。虛擬我用===比較'0'與0.我修復它,它工作得很好。祝你有個美好的一天:) – EthanBilly

回答

1

假設變量值如你說他們是,嘗試檢查這些vlaues是等於和不相同,一些倍類型可以變化(例如0整數可以是字符串等"0")。

if ($public == 0 AND $owner != $user_data['username'] || logged_in() === false) { 
    header('Location: mainpage.php'); 
    exit(); 
} 

正如@傑伊 - 布蘭查德說,你應該使用的MySQLi functions代替mysql_*many reasons - 主要是他們不支持作爲在PHP更多的標準!

0
if ($public === 0 AND $owner !== $user_data['username'] || logged_in() === false) 

應該

if (($public === 0 && $owner !== $user_data['username']) || logged_in() === false)