2013-12-17 64 views
0

我必須今天有一個巨大的大腦放屁...問題與字段驗證?

我想,以確保無論是郵編或城市輸入到表格

$zip = @$_POST['ZipCode']; 
$city = @$_POST['City']; 

// validate, at least zipcode and radius if not City/radius 
$errMsg = ''; 
$valid = true; 
$valCity = (isset($city) && strlen($city) > 0); 
$valZip = (isset($zip) && strlen($zip) > 0); 

if(!(!$valCity && $valZip) || ($valCity && !$valZip)){ 
    $errMsg .= '<p>Please make sure at least a city/town, or zip code is entered.</p>'; 
    $valid = false; 
} 

郵編才能正常運行,只有城市不起作用。我究竟做錯了什麼?

回答

4

你的代碼是有點複雜得多,它需要和你使用isset,你真的需要使用空。

$zip = $_POST['ZipCode']; 
$city = $_POST['City']; 

// validate, at least zipcode and radius if not City/radius 
$errMsg = ''; 
$valid = true; 

if(empty($zip) && empty($city)){ 
    $errMsg .= '<p>Please make sure at least a city/town, or zip code is entered.</p>'; 
    $valid = false; 
} 

如果$ zip和$ city都爲空,那麼消息將被設置,並且$ valid將變爲false。 ()將檢查變量的值,其中isset()將檢查變量的存在,因此通過設置$ zip和$ city,不管它們是否爲null,isset()總是會爲他們迴歸真實。

- 更新 -

僅供參考,空還將檢查字符串長度,所以沒有必要做兩個。

0

使用此:

if(!isset($zip) || !isset($city)){ 
    $errMsg = '<p>Please make sure at least a city/town, or zip code is entered.</p>'; 
    $valid = false; 
} 

這:

$errMsg .= 

可寧爲:

$errMsg = ''; 

$errMsg = 

而不必像這樣被定義

IF函數之前。在代碼的頂部。

+1

isset()函數將被使用在這裏,除非你使用它的$ _ POST變量錯誤的函數。 – ollieread

1

if有點複雜得多,它需要...

if(!($valCity || $valZip)){ 
    $errMsg .= '<p>Please make sure at least a city/town, or zip code is entered.</p>'; 
    $valid = false; 
} 

這是說valCity和valZip都需要是真實的。如果兩者都是錯誤的,您的信息將會顯示。

+0

請參閱此問題。我需要要麼/或...不是都按要求 – Kevin

+1

固定......你的條件只是需要一個OR。如果兩者都是正確的,這將起作用。 – Charlie74

+1

我沒有確切說明的問題,看了一遍,你會看到'郵編才能正常運行,城僅不起作用。我究竟做錯了什麼?' – Kevin