2013-05-07 21 views
-1

我有這樣的代碼:

if($_POST['badge_id'] != 'USN' OR $_POST['badge_id'] != 'VA2' OR $_POST['badge_id'] != 'PET01' OR $_POST['badge_id'] != 'GLD' OR $_POST['badge_id'] != 'BR149' OR $_POST['badge_id'] != 'DK032' OR $_POST['badge_id'] != 'COM09' OR $_POST['badge_id'] != 'KH0' OR $_POST['badge_id'] != 'COM03' OR $_POST['badge_id'] != 'US8' OR $_POST['badge_id'] != 'UK118' OR $_POST['badge_id'] != 'SE044' OR $_POST['badge_id'] != 'ESV' OR $_POST['badge_id'] != 'SGR' OR $_POST['badge_id'] != 'SG5' OR $_POST['badge_id'] != 'NO006' OR $_POST['badge_id'] != 'NO050' OR $_POST['badge_id'] != 'NO051' OR $_POST['badge_id'] != 'NO052' OR $_POST['badge_id'] != 'NO053' OR $_POST['badge_id'] != 'NO055' OR $_POST['badge_id'] != 'NO056' OR $_POST['badge_id'] != 'NO060' OR $_POST['badge_id'] != 'NO061' OR $_POST['badge_id'] != 'NO063' OR $_POST['badge_id'] != 'NO064') 
       $error[] = "The ID IS NOT WORKING."; 

但它不工作。它必須過濾輸入,但現在他說所有的ID都不起作用

回答

0

你不應該使用AND而不是OR嗎?你希望所有的條件是真實的,這意味着你的價值必須從value1和值2,不同...

if($_POST['badge_id'] != 'USN' && $_POST['badge_id'] != 'VA2' && $_POST['badge_id'] != 'PET01' && $_POST['badge_id'] != 'GLD' && $_POST['badge_id'] != 'BR149' && $_POST['badge_id'] != 'DK032' && $_POST['badge_id'] != 'COM09' && $_POST['badge_id'] != 'KH0' && $_POST['badge_id'] != 'COM03' && $_POST['badge_id'] != 'US8' && $_POST['badge_id'] != 'UK118' && $_POST['badge_id'] != 'SE044' && $_POST['badge_id'] != 'ESV' && $_POST['badge_id'] != 'SGR' && $_POST['badge_id'] != 'SG5' && $_POST['badge_id'] != 'NO006' && $_POST['badge_id'] != 'NO050' && $_POST['badge_id'] != 'NO051' && $_POST['badge_id'] != 'NO052' && $_POST['badge_id'] != 'NO053' && $_POST['badge_id'] != 'NO055' && $_POST['badge_id'] != 'NO056' && $_POST['badge_id'] != 'NO060' && $_POST['badge_id'] != 'NO061' && $_POST['badge_id'] != 'NO063' && $_POST['badge_id'] != 'NO064') 
      $error[] = "The ID IS NOT WORKING."; 
+0

是啊,我whas 2秒前認爲,#但是TY這就是正確的:P – 2013-05-07 16:12:15

2

使您的代碼更易讀,更高性能,更多的工作都在同一時間:

$validValues = [ 
    'option1', 
    'option2', 
    'option3', 
    'option4', 
    'option5', 
    'option6' 
]; 
if(!in_array($_POST['badge_id'], $validValues)) 
    $error[] = 'The ID is not working'; 
0

你有你的if語句意味着它將總是返回true(這是剛剛發生的例子)方式:

LET a = 1 

    (a != 1 OR a != 2) 
= (FALSE OR TRUE) 
= TRUE 

既然你有你CHEC這麼多badge_ids k反對,我會把它們放入一個數組並使用PHP的in_array函數。

例子:

<?php 
$badges = array('USN', 'VA2', 'PET01', 'GLD', 'BR149', 'DK032'); // etc. 
if(!in_array($_POST['badge_id'], $badges)) 
{ 
    $error[] = 'The ID is not working.'; 
}