我有这个网址:
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
在哪里?
答案 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()”对整个链接进行编码