Php $_GET问题(在&符号后断开字符串)


Php $_GET issue ( breaking the string after ampersand sign)

我在url中传递一个加密字符串,然后使用php $_GET来检索它,但我有一些问题让我先写url,使其更有意义

http://localhost/marketplace/test.php?sortid=Cd2&V0reSzN$NBh^tjcF!%3CfsAAhIU%28%3C

如果你注意到我在字符串中间有一个&符号,所以当我回显$_GET时,它会破坏&符号Ex后面的值

echo $_GET['sortid']; 

和结果我得到的是Cd2,它没有读取任何后&符号,我可以找出的问题是,php将读取一切作为一个不同的参数后'&'符号,而使用$_GET

但是我不知道如何修复这个

谢谢

发生这种情况是因为&符号在查询字符串中具有特殊含义。你所经历的行为是完全正常和意料之中的。

如果你想传递包含特殊字符的GET参数,你应该使用urlencode或base64编码对它们进行适当的编码。

通过URL创建,将&替换为%26,就可以了。或者,再次用base64编码已编码的字符串,这样就没有&号了。