是否被认为是使用 PHP 过滤和清理变量的最佳实践filter_var()
,sanitize_var()
还是有更好的选择?
谢谢你。
是否被认为是使用 PHP 过滤和清理变量的最佳实践filter_var()
,sanitize_var()
还是有更好的选择?
谢谢你。
我想提一下用于任何 HTML 过滤/清理的HTML Purifier 。
对于通用验证(数字、日期和其他值),有很多库,也有内置函数,您可以选择最合适的,但如果您已经使用 Zend Framework ,我仍然想提一下Zend_Validate .
我总是会考虑以下口头禅......“永远不要相信用户输入”ctype_alpha,ctype_alnum 也是验证的好表现,记住也要验证客户端(javascript验证),这也将有助于减少服务器负载
让我们尝试验证来自表单的输入。
我们需要做的第一件事是确认我们要查找的输入数据是否存在。
然后我们使用 filter_input() 函数过滤输入数据。
在下面的示例中,输入变量“email”被发送到 PHP 页面:
我认为最好使用 HTML5 使用客户端验证,然后使用服务器端。PHP 具有过滤字符串的 FILTER_SANITIZE_STRING 之类的函数(尽管您不需要验证),您可以使用 FILTER_VALIDATE_EMAIL 而不是使用正则表达式手动验证电子邮件。您还可以使用限制,例如字符数量等。
概念上的例子...
if form is submitted
if 'name' is not empty
create a variable that equals filter_var($_POST['name'], FILTER_SANITIZE_STRING)
if 'name' is empty then set echo an error message
if 'email is not empty
create a variable that equals filter_var($_POST['email'], FILTER_SANITIZE_STRING)
// then you can validate email
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
error message
// do this for other variables
if there's not error
send email and or a thank you message
//FORM here