为防止恶意用户尝试利用密钥,我们会确保使用preg_match
仅使用字母数字文本和其他一些项目命名密钥。
这是代码:
if (!preg_match('#^[&a-zA-Z0-9\.:_/-\s]+$#uD', $str)) {
exit('String not valid:' . $str);
}
此功能一直运行到上周,当客户在测试服务器上更新WAMP
时。使用字符串dverse.session
,代码输入EXIT()
。我用http://www.phpliveregex.com/检查了正则表达式,但正则表达式运行良好。可能是什么问题呢?
答案 0 :(得分:0)
你应该在正则表达式中转义减号:
if (!preg_match('#^[&a-zA-Z0-9\.:_/\-\s]+$#uD', $str)) {
exit('String not valid:' . $str);
}
答案 1 :(得分:0)
解决。感谢大家,解决方案是:
if (!preg_match('#^[&a-zA-Z0-9\.:_/\-\s]+$#uD', $str)) {
exit('String not valid:' . $str);
}
这是由更改PHP版本引起的。您可以使用以下代码在http://sandbox.onlinephpfunctions.com/进行检查:
$str = "dverse.session";
if (!preg_match('#^[&a-zA-Z0-9\.:_/-\s]+$#uD', $str)) {
exit('String not valid:' . $str);
} else {
echo "OK";
}
将PHP版本从5.5.5更改为5.6.2(或5.5.18)会出现错误。谢谢!