2013-05-03 50 views
0

我只是修復一些表單驗證,我似乎有一個非常奇怪的問題。0如果!= 0,則不傳遞if語句?字符串相比字符串

$newsletter = $_POST['newsletter']; // value 0 or 1 is passed from form, as "value" 
// input type is radiobuttens 

然後,我有一個非常簡單的

if ($newsletter != "0" || $newsletter != "1") { 
    $error_message .= 'Invalid newsletter?<br />'; 
} 

它不通過呢?我曾嘗試:

if ($newsletter != 0 || $newsletter != 1) { 

不及格或者,但那就比較字符串爲int,因爲我知道

+0

你想完成什麼?編輯:**如果你回覆$ newsletter,你會得到什麼?這可能會幫助你自己回答** – Ryan 2013-05-03 13:36:16

+0

我試圖過濾驗證和防止HTML編輯,我有一個輸入類型radiobutten時事通訊,是= 1否= 0,很簡單,它被髮送到窗體,我想過濾它,並返回一個錯誤,如果它不= 1或0 – 2013-05-03 13:37:08

+0

我認爲你需要'&&而不是'||'在查詢中 - 一個OR匹配,如果任何一方是真的,數字是總是成爲0(匹配!= 1)或1(匹配!= 0) – andrewsi 2013-05-03 13:37:55

回答

0

如果它是「0」,這不是「1」。如果它是「1」,那不是「0」。所以它總是或者不是零或者不是一個。沒有任何價值會通過該測試。

您只想返回一個錯誤,如果它不等於「1」它也不等於「0」。

0

回答的評論,你可以做:

if(!$newsletter) { $error_message .= 'Invalid newsletter?<br />'; } 
1

你必須聲明更改爲&&

if ($newsletter != "0" && $newsletter != "1") { 

這將檢查如果兩者都不是0也不是1

0

你想要一個AND比較。我假設你想確保只有值0或1被傳遞給腳本。

if ($newsletter != "0" && $newsletter != "1") { 
    $error_message .= 'Invalid newsletter?<br />'; 
} 

由於0!= 1 OR條件的任一側爲真。所以這總是過去了。