Php 良好且安全的表单验证

Php 良好且安全的表单验证,php,forms,Php,Forms,用PHP验证表单的最佳和最安全的方法是什么?例如:长度、电子邮件、空白、特殊卡片等 对此使用filter_var安全吗?或者我应该在一个函数中逐个手动定义它们。或者还有其他方法 抱歉,我只是想确认一下,因为我在构建表单时经常遇到这个问题。验证应该在客户端和服务器端都进行。客户端验证使服务器端脚本遇到的错误更少(或者可能没有)。这是可取的,因为通常您不喜欢在服务器端得到太多错误 也就是说,有很多方法可以用PHP验证输入。这取决于上下文。例如,检查空白(就像你自己说的),或者某些输入是否是数字,检查

用PHP验证表单的最佳和最安全的方法是什么?例如:长度、电子邮件、空白、特殊卡片等

对此使用filter_var安全吗?或者我应该在一个函数中逐个手动定义它们。或者还有其他方法


抱歉,我只是想确认一下,因为我在构建表单时经常遇到这个问题。

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


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

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

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

必须在两侧进行验证。服务器端和客户端。您可以在客户端进行验证,并简化服务器端的工作。即使你在客户端进行验证,恶意的人也会入侵你的代码。服务器端也必须进行验证


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

接下来:进行客户机/服务器验证肯定有正确和错误的方法。在JavaScript中复制所有PHP验证代码是一种错误的方法。我参与过许多项目,其中客户端验证与服务器端不同步。老实说,到目前为止,我看到的最好的解决方案(并不意味着没有更好的解决方案)是服务器上的虚拟控制器,它接受任意形式的数据,并通过AJAX根据一组规则对其进行验证。这是一个非常迅速的电话(你能在这里共享控制器吗?值得检查一下它是否也适用于我的项目。如果我用javascript验证它们,我是否仍然应该在服务器端使用正则表达式?或者这是没有必要的。因为就像Ergin Keles所说的,客户端可以由访问者更改。假设攻击你网站的访问者被计算在内很少,但自然最好是双方都进行验证来解释这些错误。另外,检查表单验证的W3()和JS表单验证的正则表达式(),您应该会没事的!