表单验证 - jQuery 验证是不是足够以及如何巧妙地验证 PHP 中的数据?

Posted

技术标签:

【中文标题】表单验证 - jQuery 验证是不是足够以及如何巧妙地验证 PHP 中的数据?【英文标题】:Form validation - is jQuery validation sufficient and how to neatly validate data in PHP?表单验证 - jQuery 验证是否足够以及如何巧妙地验证 PHP 中的数据? 【发布时间】:2013-05-26 13:17:40 【问题描述】:

我有一个表单(现在只有一个,但会有更多具有类似参数的表单),我使用 jQuery Validation 对其进行验证(it 这个词太大了,我只使用 jQV 验证一个字段),此表单是使用 AJAX 发送的。我有这种形式的 5 个输入:

文本输入:用户名,由单独的 php 脚本远程验证 - 它检查此用户是否存在于不同站点的数据库中,如果存在,还检查此用户是否有一些指定数据,但这并不重要

2 次单选按钮(我的意思是 2x 2 单选按钮)在 PHP 中验证(稍后代码)

2 次 PickAColor 表单,也仅使用 PHP 和 regexp 对 hexcolors 进行验证

我有一个问题。有什么方法可以在 PHP 中以更sophisticated 的方式检查这些数据?因为,正如我所说,我以类似的方式验证它们:

if($period != "3month" && $period != "7day") 
  echo '<div class="alert">Wrong period!</div>';
  exit;

其实我现在写的这个表格比较短,但我也有一些非常大的,像上面这样的if 甚至可以有50行,这很糟糕。它们中的大多数在 if 中都有类似的表达式,这意味着我检查表单发送的值是否在表单提供的可能选项列表中(有人可以更改 value 中的参数Firebug 并称自己为黑客......)。这很复杂,我不知道该怎么说,但我想你明白我的意思。所以,再一次 - 在 PHP 中验证它有什么意义,如果是这样,有没有更好的方法来验证它?或者,也许您还有其他建议?非常感谢您的帮助。

【问题讨论】:

这取决于你的听众。如果你能保证你的听众永远不会试图绕过你的验证,那么 jQuery 就足够了。如果您不能确定,那么您绝对需要使用 PHP 验证服务器端,并且不要信任来自客户端的任何内容。 【参考方案1】:

你必须认为你的用户可以在那里提交任何东西,为了使代码更清晰、更面向 MVC(和可重用),你需要在应用程序端进行验证,并在 jQuery 中使用通用函数来向用户显示错误,所以我建议您使用发送到您的 php 应用程序的表单进行 ajax 发布,发送到接收表单值的 api 控制器,使用模型进行验证并返回带有 jew 表单值的对象(如果您需要清理)以及每个字段的任何错误,然后您只需在 json 中输出:


    errors: 
        name: "Already used name",
        field2: "Some bad text provided"
    

然后您只需遍历错误并设置为每个错误文本的已经存在的占位符,例如

<spam id="name-error" class="error"></spam>
<input type="text" name="name" value=""/>

然后你就有了一个验证码,你可以在提交表单时重复使用。

【讨论】:

感谢您的建议。我刚做了两节课,它们做的事情几乎和你告诉我的一样。非常感谢:)

以上是关于表单验证 - jQuery 验证是不是足够以及如何巧妙地验证 PHP 中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 验证插件在对话框表单上应用验证?

jquery验证表单是不是为空

检查表单是不是有效而无需重新运行 jquery 验证

使用 Jquery 引导验证来验证字段数组中的单个字段以及兄弟字段

如何从表单中删除 jQuery 验证?

validate jquery怎么判断一个表单是不是通过验证