我正在验证POST请求变量,我曾经这样做过:
$email = htmlentities($_POST['email']);
但是现在我搜索并了解了filter_var并且我正在进行这样的验证:
$email = filter_var(htmlentities($_POST['email']), FILTER_SANITIZE_EMAIL);
哪种方式更好?并为所有类型的输入[电话 - 字符串 - 等..]我必须使用什么?
对不起,我是初学者,我已查看过手册,但我无法理解。
感谢您的帮助。
答案 0 :(得分:1)
仅对电子邮件使用以下行:
/* Used by NHibernate to cast between string and type-safe-enum */
public class MyCustomEnumType : IUserType
{
...
public SqlType[] SqlTypes
{
get {
return new[] {
// not working for NHibernate 4.1
//NHibernateUtil.String.SqlType
SqlTypeFactory.GetString(200)
};
}
}
...
}
这将正确删除电子邮件字符中的非法字符(例如filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL);
)并保留合法字符,例如;
或&
使用+
可能会将合法的电子邮件地址变为非法的,htmlentities
将会中断。
如果您正在处理标签或说明的用户输入,那么您可以正常存储所述输入(使用预准备语句以允许DB正确地转义输入)并使用FILTER_SANITIZE_EMAIL
< strong>在页面上显示时。或者,您可以使用:
htmlentities
这是字符串清理过滤器剥离标签。
查看更多过滤条件