我已经用谷歌搜索并搜索了 SO 和所有内容,但我无法得到答案。
为什么下面的 PHP 代码让加号通过:
$aValid = array('-', '_', '.');
if (ctype_alnum(str_replace($aValid, '', $_POST['Rusername']))){
(如果用户输入 1234+,它会像 vas 一样有效????)。
我,通常,找到了一个旁路,但它真的有必要吗?
$aValid = array('-', '_', '.');
if (ctype_alnum(str_replace($aValid, '', (htmlentities ( trim ( $_POST['Rusername'] ) , ENT_NOQUOTES ))))){
echo "+ ok";
}else{
echo "+ not ok";
}
我想使用这种验证,并在需要时向 $aValid 添加特殊字符。
在插入 MySQL 之前,我会做 mysql_real_escape_string 或准备好的语句。
为什么 + 符号适用于第一段代码的任何想法。在我看来,真的不应该。
最新更新 - 我需要几个小时的低级调试 HTTP 标头来确定我的 A 端更改了 Content-Type 以便 + 号在到达 PHP if 子句之前变成空格(允许在我的白名单中)...
什么 - 我希望它永远不会发生在你身上 - 经验:)
提醒自己:如果 jQuery 在这个验证过程中扮演着如此重要的角色,那么应该提到它......