在 PHP 中将filter_var与 htmlentities 一起使用是否好



我正在验证一个 POST 请求变量,我曾经这样做过:

$email = htmlentities($_POST['email']);

但是现在我搜索并了解了filter_var,我正在像这样进行验证:

$email = filter_var(htmlentities($_POST['email']), FILTER_SANITIZE_EMAIL);

哪种方式更好? 对于所有类型的输入 [电话 - 字符串 - 等 ..]我必须使用什么?

抱歉,我是初学者,我已经查看了手册,但我无法理解很多。

感谢您的帮助。

仅对电子邮件使用以下行:

filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL);

这将正确删除电子邮件字符(例如;)中的非法字符,并保留合法字符,例如&+

使用htmlentities可能会将合法电子邮件地址转换为非法电子邮件地址,然后FILTER_SANITIZE_EMAIL该地址将被破坏。

如果您正在处理标签或描述的用户输入,则可以正常存储所述输入(使用预准备语句以允许数据库正确转义输入)并在页面上显示时使用 htmlentities。或者,您可以使用:

filter_input(INPUT_POST, "description", FILTER_SANITIZE_STRING);

这字符串清理过滤器条标签。

您可以在以下位置查看更多过滤器: http://php.net/manual/en/filter.filters.sanitize.php

最新更新