自己在项目开发中写了个自用接口,用GET方法传参(用户名和密码)。最近收到用户反馈:密码为特殊字符时会出错。我一开始想是不是php的mysql_real_escape_string函数将特殊字符转义了,但用户说自己密码只有“+”号这个特殊字符,而“+”号不属于该函数转义的范围之内。
为了弄明白这个问题我就在本地测试了一下,果然发现有bug。
测试代码:
1 2 3 4 5 | <?php echo $_GET['a']."<br />"; echo $_GET['b']."<br />"; echo urldecode($_GET['a'])."<br />"; ?> |
测试的url为http://localhost/test/?a=123!@#&b=123结果报错了:
可以看出“#”号后面的参数被屏蔽了,这很正常,因为“#”号后面的数据不会发送到HTTP请求中。 Continue Reading...