我想知道,如果preg_match()可以用作PHP的唯一防线。
测试preg_match(),至少对于一个简单的输入表单字段,它只接受正则表达式可接受的内容,并为其他所有内容返回false:
对于数字:
function GetUserID($userid) {
$regexnum = "/^[0-9]+$/";
if(preg_match($regexnum, $userid) != 1 OR empty($userid)) {
return false;
}
else {
return $userid;
}
}
姓名:
function GetUsername ($user) {
$regex = "/^[a-zA-Zà-ûÀ-ÛçÇ\s]+$/";
if (preg_match($regex, $user) != 1 OR empty($user)) {
return false;
}
else {
return $user;
}
}
所以我的问题是,如果不使用htmlentities()或filter_var(),preg_match()是唯一的防线,因为它不接受任何其他内容或者我错过了什么?
*编辑* 我已经创建了这个代码来测试它: Test Site
答案 0 :(得分:0)
是。 然而不要完全依赖它是一个好主意,因为正则表达式的轻微改变可能会让你变得脆弱。使用正确的转义函数是理想的,因为即使验证代码发生变化,您的卫生处理代码也不会。