1

我是 php 新手,这是我在这里的第一篇文章,对写文章也很陌生。我正在使用脚本来验证表单输入。部分脚本如下:

$data=$_POST;
print_r($data); 

if(($data['dm']="No") and (!empty($data['dmsince']))):
    $error=$error." dm mismatch N";  
endif;  

if(($data['dm']="Yes") and (empty($data['dmsince']))):
    $error=$error." dm mismatch Y";  
endif;

if ($error):
    print $error;
    $error="";   
    print $form;
else:
    print "OK";

$_POST['dm']通过选择语句接受是或否。

出现的问题是在处理表单时:

$_POST['dm']='No'并且$_POST['dmsince']是空白的。我得到错误为'dm mismatch Y'.

$_POST['dm']=我Yes得到$_POST['dmsince']='some valid date' 错误为'dm mismatch N'.

从逻辑上讲,在这两种情况下,我都不应该得到任何错误。它似乎是强行进入其中一个循环。我也尝试过 elseif 没有结果。这段代码有什么问题?

4

1 回答 1

3

更新您的条件以实际使用条件比较运算符(即=====)。现在,您在第一个条件中将 $data['dm'] 分配为等于“否”,在第二个条件中分配为“是”。

您可能还想养成这样写比较的习惯:

if(true === $var)
if("Yes" === $var2)

使用您将变量与左侧进行比较的项目。以这种方式,如果您不小心做了类似的事情:

if(true=$var)

PHP 会抛出错误而不是这样的情况

if($var=true)

这将设置 $var = true 并始终将条件评估为 true。

它使调试代码变得更加容易。

于 2012-09-07T16:33:58.417 回答