php表单验证返回不匹配的错误

时间:2012-09-07 16:31:09

标签: php

我是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";

我通过select语句接受$_POST['dm']为是或否。

发生的问题是处理表单时:

$_POST['dm']='No'$_POST['dmsince']为空。 我收到错误为'dm mismatch Y'

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

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

1 个答案:

答案 0 :(得分:3)

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

你可能也想养成这样写比较的习惯:

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

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

if(true=$var)

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

if($var=true)

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

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