字段验证问题


Issue with field validation?

我今天一定脑屁很大...

我正在尝试确保在表格中输入邮政编码或城市

$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;
}

邮政编码仅有效,仅城市无效。 我做错了什么?

你的代码比它需要的要复杂一点,你正在使用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() 将始终为它们返回 true。

--更新--

仅供参考,空也会检查字符串长度,因此无需同时执行这两项操作。

你的if比它需要的要复杂一些......

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

这说明valCity和valZip都需要是真的。 如果任一为假,将显示您的消息。

使用这个:

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 函数之前。在代码顶部的某个地方。