2013-12-17 67 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