0

我正在尝试为需要能够接受查询字符串中的网址而不首先对其进行urlencoded 的客户端编写一个脚本。一个例子是这样的:

http://foo.com/script.php?url=www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software&ie=UTF8&qid=1341685530&sr=1- 1

但是,当我回显 $_GET['url'] 的内容时,它给了我以下信息:

www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software

所以基本上它似乎在第一个&符号上窒息 - 我猜是因为它认为它是另一个变量。

除了表单 urlencoding,还有什么技巧可以让它工作吗?我可能可以从表单中发布它,但这违背了脚本的想法。

4

2 回答 2

1

对于这个特定的用例,您应该$_SERVER['QUERY_STRING']改用。这将一次性为您提供完整的查询字符串,然后您可以自己拆分它。

在您的示例中,PHP 假设 & 是下一个 GET 变量的分隔符。

于 2012-07-07T20:00:54.570 回答
0

您可以询问查询参数,并将它们添加到您收到的 URL。以正确的顺序列出 $_GET 中的剩余参数,并将它们添加到 $_GET['url'] 的末尾。

$_GET['url']
 + '&ie=' + $_GET['ie']
 + '&qid=' + $_GET['qid']
 + '&sr=' + $_GET['sr']

请注意,有一天您可能会得到一个额外的参数 url。 http://foo.com/script.php?url=www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software&ie=UTF8&qid=1341685530&sr=1- 1&url=http://someAmazoneStuff

于 2012-07-07T19:56:54.370 回答