是否有必要验证姓名或街道地址?当我用以下格式编码时。如果是这样,为什么呢?
$address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address']));
$name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name']));
答案 0 :(得分:1)
htmlspecialchars
/ htmlentities
/ etc过滤的值存储在数据库中 - 直接在HTML / XML / etc文档中显示之前。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