我今天必须要有一个大脑屁...
我正在尝试确保将ZipCode或City输入表单
$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;
}
ZipCode仅适用,City仅不起作用。我做错了什么?
答案 0 :(得分: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。
不同之处在于empty()将检查变量的值,其中isset()将检查变量的存在,因此通过设置$ zip和$ city,无论它们是否为null,isset()都会总是为他们回归。
- 更新 -
只是FYI,空也会检查字符串长度,因此不需要同时执行这两项操作。
答案 1 :(得分: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都必须是真的。如果其中任何一个为假,则会显示您的消息。
答案 2 :(得分: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函数之前。在代码的顶部。