2013-03-18 66 views
-1

用PHP验证表单最好和最安全的方式是什么?例如:长度,电子邮件,空白,特殊字符等。良好和安全的表单验证

使用filter_var是否安全?或者我应该手动将它们全部定义在一个函数中。或者还有其他方法。

对不起,我只是想确认一下,因为我在构建表单时遇到了很多次这个问题。

回答

1

验证应在客户端和服务器端进行。客户端验证使您的服务器端脚本遇到较少(或可能没有)错误。这是可取的,因为通常你不喜欢在服务器端获得太多的错误。

这就是说,有很多方法可以验证您的输入与PHP。这取决于上下文。例如,检查空格(就像你自己说的那样),或者某些输入是否是数字,检查给定值的长度(例如最小长度可能适用),或者电子邮件地址是否真的是电子邮件地址! filter_var()可能并不总是足够的。

+0

为了跟进:客户端/服务器验证肯定有正确和错误的方法。在JavaScript中复制所有的PHP验证代码是一种错误的方式。我参与了很多项目,其中客户端验证与服务器端不同步。说实话,迄今为止我所见过的最好的解决方案(并不意味着没有更好的解决方案)是服务器上的虚拟控制器,它使用任意形式的数据,并通过AJAX对照一组规则进行验证。这是一个非常快速的电话(<10毫秒),最重要的是,准确。 – 2013-03-18 13:27:43

+1

你可以在这里分享控制器吗?值得检查它是否也适用于我的项目。 – mavili 2013-03-18 13:33:07

1

您可以在服务器端使用正则表达式。但我会考虑使用JavaScript来验证客户端的表单域。你不想从服务器获取信息,只是为了检查字段是否正常,它将消耗无用的服务器时间。

+0

如果我将使用JavaScript验证它们,我还应该在服务器端使用正则表达式吗?或者这是没有必要的。因为像Ergin Keles说客户端可以被访问者改变。 – 2013-03-18 13:48:17

+0

可以说,侵入您网站的访问者数量非常少,但自然最好双方进行验证来解决这些不幸。此外,请检查表单验证W3(http://www.w3schools.com/js/js_form_validation.asp)和JS表单验证的正则表达式(http://www.9lessons.info/2009/03/perfect-javascript -form-validation.html),你应该没问题! – 2013-03-18 13:53:07

1

我认为最好的验证过程是用正则表达式验证数据。您可以定义需要多少个字符(至少或最多),允许或不允许哪些字符,甚至可以定义数据的确切格式。

验证必须在双方进行。服务器端和客户端。你在客户端进行验证,并缓解服务器端的工作。即使你做了验证客户端,有恶意的人也可以破解你的代码。服务器端也必须有验证。

filter_var函数也很有用。我用它来验证电子邮件地址。