php传递URL

时间:2011-01-24 09:31:37

标签: php

我有这个网址:

http://www.example.com/get_url.php?ID=100&Link=http://www.test.com/page.php?l=1&m=7

当我打印$_GET['Link']时,我只看到http://www.test.com/page.php?l=1

&m=7在哪里?

3 个答案:

答案 0 :(得分:8)

如果您想将网址作为GET参数传递,则必须对其进行网址编码。

问题是,服务器将&视为Link参数的结尾。这意味着你实际上得到了:

$_GET['ID'] = '100';
$_GET['Link'] = 'http://www.test.com/page.php?l=1';
$_GET['m'] = '7';

您要做的是使用urlencode。例如:

$link = 'http://sample.com/hello?a=5&b=6&d=7';
$address = 'http://site.com/do_stuff.php?link='.urlencode($link)

外部参考:

答案 1 :(得分:1)

这是一个单独的值。如果以这种方式传递,GET值为:

ID=100
Link=http://www.test.com/page.php?l=1
m=7

&字符分隔GET传递的值。

为了传递整个事物,你需要对其进行正确编码(参见Sebastian的回答)。

答案 2 :(得分:-1)

(见塞巴斯蒂安的答案)。服务器看到&作为结束参数,所以你不会得到&之后的值。如果你想得到整个事情,你需要在传递参数之前使用“function urlencode()”对整个链接进行编码