我这里有一小段代码,它是php登录表单的一部分,它接受用户的名字、姓氏和密码。
$first_name = SANITIZE(trim(strtolower(@$_POST["f_name"])));
$last_name = SANITIZE(trim(strtolower(@$_POST["l_name"])));
这些在桌面上对任何类型的名字都能很好地工作,但在移动的上似乎有一个问题,名字中有一个'或一个-。所以例如,沙奎尔·奥尼尔可以用他的名字和姓氏在桌面上登录得很好。但如果他尝试用手机登录,他名字里的撇号会出现一些问题,显示用户不存在。你知道为什么会出现这种情况吗?已经在iPhone和android手机上进行了测试,结果相同。
2条答案
按热度按时间dgiusagp1#
试着用
htmlspecialchars()
测试一下,有时在表单中输入数据或从数据库中显示数据时,特殊字符并不好用。1wnzp6jl2#
尝试获取字符代码并与数据库进行比较。
虽然ASCII只有一个单引号代码(不包括反引号),但UTF字符集有多个单引号代码。“-”也是如此。带有“智能”键盘的移动的设备可能会替换他们认为语法更正确的字母。
以前我写这是错误的:
如果是这种情况,您可以通过指定您的Web服务器(至少对于登录页面)只需要ASCII头文件来解决此问题:
接受:文本/html;字符集=US-ASCII,文本/纯文本;字符集=US-ASCII