我正在验证一个 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