这个link是否足以满足输入过滤表单数据的需要?以帖子为例?
<?php
$var=300;
$int_options = array(
"options"=>array
(
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
什么是最常见的过滤方式?就像消毒字符串和数字一样。我使用preg_match验证服务器端的电子邮件字段和javascript中的正则表达式检查。我没有验证纳粹,但想对最常见的东西进行某种过滤。
我认为这些事情可以在我的应用程序中抽象出来,例如类中的一些公共静态函数,比如这个
Validate::String($str);
Validate::Interger($int);
你怎么看?
答案 0 :(得分:1)
filter_var()是一个好的开始。如果您计划在任何类型的SQL语句中使用这些输入,那么您也应该考虑对其进行正确的清理。
带有预准备语句的{p> PDO mysql_real_escape_string或任何其他db包装器(MBD2等...)应该为您提供此功能。我想这里的关键思想是过滤和清理数据之间存在差异,并且每种方法都有不同的级别。这是一个多部分的过程。
对于过滤,你可以进行类型检查(这是一个int吗?)然后验证输入是否符合你的标准(这个int介于1和128之间?)
您还需要清理数据。 htmlspecialchars用于输出,一些正确的引用和转义以在SQL中使用。
答案 1 :(得分:0)
没有通用规范说明如何过滤用户输入。 但是使用内置函数是一个非常好的起点。
答案 2 :(得分:0)
日期过滤很常见。为此我只使用strtotime()并查看它是否出现在合理的日期(即不是1969年)。然后用户可以输入任何内容,包括“+12天”。
密码很常见,但却是一个独特的案例。您可能不想允许空格,必须是最小长度,包含字母和数字等。
社交安全号码,电话和邮政编码等数据元素可以很简单,必须是一定的长度并且只包含数字(美国)。或者使它们健壮,确保它们是有效格式并且在“使用”范围内。例如,电话号码不能以0开头。
理想情况下,一次验证会使用另一种验证。例如,邮政编码首先调用“only_digits”验证函数,然后更详细地检查是否有效。