Php 现场验证有问题吗?

Php 现场验证有问题吗?,php,forms,validation,Php,Forms,Validation,我今天一定在放屁 我试图确保表单中输入了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

我今天一定在放屁

我试图确保表单中输入了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;
}
$zip=@$\u POST['ZipCode'];
$city=@$_POST['city'];
//验证,如果不是城市/半径,则至少验证zipcode和半径
$errMsg='';
$valid=true;
$valCity=(isset($city)和&strlen($city)>0);
$valZip=(isset($zip)和&strlen($zip)>0);
如果(!(!$valCity&&$valZip)| |($valCity&&!$valZip)){
$errMsg.='请确保至少输入了一个城市/城镇或邮政编码。

'; $valid=false; }
ZipCode只起作用,City只起作用。我做错了什么?

使用以下命令:

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 = '';
在if函数之前。在代码的顶部某处。

使用以下命令:

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 = '';

在if函数之前。在代码顶部的某个地方。

如果您的
比需要的复杂一点

if(!($valCity || $valZip)){
    $errMsg .= '<p>Please make sure at least a city/town, or zip code is entered.</p>';
    $valid = false;
}
if(!($valCity | |$valZip)){
$errMsg.='请确保至少输入了一个城市/城镇或邮政编码。

'; $valid=false; }

这说明valCity和valZip都必须是真实的。如果其中一个为false,则将显示您的消息。

如果您的
比需要的复杂一点

if(!($valCity || $valZip)){
    $errMsg .= '<p>Please make sure at least a city/town, or zip code is entered.</p>';
    $valid = false;
}
if(!($valCity | |$valZip)){
$errMsg.='请确保至少输入了一个城市/城镇或邮政编码。

'; $valid=false; }

这说明valCity和valZip都必须是真实的。如果其中一个为false,您的消息将显示。

您的代码比它需要的复杂一点,并且您使用的是isset,而您确实需要使用empty

$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=$\u POST['ZipCode'];
$city=$_POST['city'];
//验证,如果不是城市/半径,则至少验证zipcode和半径
$errMsg='';
$valid=true;
if(空($zip)和空($city)){
$errMsg.='请确保至少输入了一个城市/城镇或邮政编码。

'; $valid=false; }
如果$zip和$city都为空,则消息将被设置,$valid将变为false

不同之处在于empty()将检查变量的值,其中isset()将检查变量的存在,因此通过设置$zip和$city,无论它们是否为null,isset()将始终为它们返回true

--更新--


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

您的代码比需要的复杂一点,并且您使用的是isset,而您确实需要使用empty

$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=$\u POST['ZipCode'];
$city=$_POST['city'];
//验证,如果不是城市/半径,则至少验证zipcode和半径
$errMsg='';
$valid=true;
if(空($zip)和空($city)){
$errMsg.='请确保至少输入了一个城市/城镇或邮政编码。

'; $valid=false; }
如果$zip和$city都为空,则消息将被设置,$valid将变为false

不同之处在于empty()将检查变量的值,其中isset()将检查变量的存在,因此通过设置$zip和$city,无论它们是否为null,isset()将始终为它们返回true

--更新--


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

请查看问题。我需要……或者。。。两者都不符合要求。。。你的情况只是需要一个手术室。如果其中任何一个是真的,这将起作用。我确实在问题中明确了,再看一遍,你会看到
ZipCode-only有效,City-only无效。我做错了什么?
核心问题是上面的代码,而不是if语句,这种方法毫无帮助。请查看问题。我需要……或者。。。两者都不符合要求。。。你的情况只是需要一个手术室。如果其中任何一个是真的,这将起作用。我确实在问题中明确了,再看一遍,你会看到
ZipCode-only有效,City-only无效。我做错了什么?
核心问题是上面的代码,而不是if语句,这种方法根本没有帮助。除非在$\u POST变量上使用isset(),否则在这里使用的函数是错误的。isset()在这里使用的函数是错误的,除非在$\u POST变量上使用。