3 回答
TA贡献1803条经验 获得超3个赞
嗯,这$var1 or $var2 or $var3
显然是完全错误的。你不能or
串起来并期望一个不错的结果。在大多数情况下,结果将是true
,这不是您想要的。
这让我怀疑你的说法:“它可以使用两种代码”。
是的,如果我查看preg_match手册,很明显它不接受以逗号分隔的多个主题。
所以这两个版本都不起作用。
除此之外,还有一个更普遍的问题。您正在尝试使用preg_match()
将变量的可能内容限制在 1 到 12 个字符之间"a-zA-Z._"
。这是非常严格的。像这样限制用户名和密码被认为是不好的做法。
您也只是die();
在找到不匹配的模式时,这对用户来说信息量不大。
所以“更干净”的版本是省略了这段代码。
对不起,我不能更积极...也许提示会有所帮助?
看看filter_input(),它是我现在用来过滤输入的东西。
TA贡献1963条经验 获得超6个赞
另一种方法是使用foreach循环:
foreach ( ['username','password','captcha_code'] as $key ) {
if ( !preg_match("/^[a-zA-Z._ ]{1,12}$/", $_POST[$key]) ) {
die();
}
}
TA贡献2080条经验 获得超4个赞
要将三个字符串与一个模式匹配,您可以尝试使用此代码。
$pattern = "/^[a-zA-Z._ ]{1,12}$/";
if(!preg_match($pattern, $_POST['username'])
or !preg_match($pattern, $_POST['password'])
or !preg_match($pattern, $_POST['captcha_code'])) {
die();
}
- 3 回答
- 0 关注
- 341 浏览
添加回答
举报