2017-06-17 119 views
-2

我有一个网站使用PHP并与MySQL数据库连接。我也有一个admindashboard用于控制用户在我已编码的PHP脚本中的某些功能。浏览器URL问题,因为像“&”的特殊字符

<a href="../loginUser2.php?userName=<?php echo $SQLRow["userid"];?>" target="_blank" class="a">Records</a> 

该代码使得这样的登录网址链接完成后,使用用户名

mydomain.com/loginUser2.php?userName=abc&xyz 

在MySQL从表中取名abc & XYZ或任何用户。当我点击任何用户的链接时,一切都很好,只需在Web浏览器中,用户就可以在PHP的帮助下自动登录。但是在任何用户名中使用符号或特殊字符LIKE目前我在“&”符号中有问题。当我用自己编辑网址并在网络浏览器中输入时,手动链接替换为&,%26链接工作和用户登录成功。我只想要如果任何用户如何在MySQL数据库中注册,并包含任何特殊字符符号,如&等,那么如何解决网络浏览器工作时会自动处理这种类型的符号和字符。

我试过phpMyAdmin编辑用户名列中的一个愚蠢的东西,并更新这样的用户名abc%26xyz我认为当我将更新然后它的作品& =%26但我失败了。

+2

看['urlencode'(http://php.net/manual/en/function.urlencode.php)。 – sjdaws

+0

无关的问题,但*“当我点击任何用户的链接,然后用户自动登录与PHP的帮助”*建议一个严重的安全漏洞,除非后来的代码验证“管理员用户”确实被授权登录为用户...但在这个应用程序中,传递用户名似乎是一个糟糕的设计选择 - 你的用户大概有一个整数ID主键,这将是更明智的事情通过。 –

回答

-1

您可以使用urlencode()发送特殊字符并urldecode()获取编码值。

<a href="../loginUser2.php?userName=<?php echo urlencode($SQLRow["userid"]);?>" target="_blank" class="a">Records</a> 

urldecode($_GET['userName']); 
+0

没有理由使用'urldecode()',这将自动完成。 – Brad

-1

当您在浏览器中点击网址时,浏览器会进行网址编码。其中'&'转换为'%26'。所以在你的loginUser2.php里只需要'urldecode()',你接受你的get参数值。它会再次将您的值从'abc%26xyz'解码为'abc & xyz'。

试试这个:

urldecode($_GET['userName']); 
+0

'$ _GET ['userName']'会被自动解码。问题在于它需要首先被正确编码。 – Brad