PHP表单验证问题?

时间:2010-03-25 08:04:01

标签: php validation

是否有必要验证姓名或街道地址?当我用以下格式编码时。如果是这样,为什么呢?

$address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address']));
$name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name']));

3 个答案:

答案 0 :(得分:1)

  1. 不要将htmlspecialchars / htmlentities / etc过滤的值存储在数据库中 - 直接在HTML / XML / etc文档中显示之前。
  2. 如果你对blah blah <>DAS#^^2@@vm/.,czc这样的名字没问题,那么这段代码就可以了。

答案 1 :(得分:1)

您知道多少个名称或地址包含'$'或'%'?您可以执行简单检查以检查用户是否愚蠢。通常名称只包含单词字符(如果它们是Jr,Sr等,有时会带有逗号和句点),并且地址只包含字母数字字符(除非它们缩写,在这种情况下可能包含句点)。这没有必要,但我个人会把支票放在一起,所以你最终不会只是为了搞笑而进入随机BS的用户(这是我的一个小小的烦恼,对不起)。

答案 2 :(得分:0)

你似乎有点混淆,因为你有两种逃避数据的方法,当规则是FIEO过滤器输入转义输出时没有过滤

过滤

如果您决定“名称”只能是大写和小写字母,长度在2到50个字符之间并且可以包含短划线和单引号(')那么您应该:

删除上面与您自己的定义示例不匹配的任何内容(可能使用正则表达式) 要么 中止操作

取决于您希望成为您的用户/潜在破解者的方式

filter_var()在这种情况下也非常有用。

逃逸

您为数据准备好的下一个环境准备好了数据;

如果要进入数据库,那么你将使用你的mysqli_real_escape_string(),如果你在html中回显到屏幕,那么使用htmlentities()等等。

HTH