2011-05-26 136 views
3

我有它由一个可变

// The First Page (hello.php) 

$a = 'goto.php?a_56=63525588000&url=http://www.example.com/site/DISC+cUSTOMc+Studio+24+-    +Windows/1142766.p? 
     id=1218224802931&usi=1142766&cmp=RMX& 
     ky=2crslw0k9ZOM0ciu2rqi4NsYY7eQnnEyP'; 

// The Second Page (goto.php) 
$r = $_GET['url']; 

echo $r; 

//http://www.example.com/site/Disc cCustomc Studio 8 - Windows/1142766.p?id=1218224802931 

为什么会被截断?

+1

可能是它没有URL编码 - 使用“进行urlencode”建立查询,并使用urldecode来获取数据。见http://www.php.net/manual/en/function.urlencode.php&http://www.php.net/manual/en/function.urldecode.php – 2011-05-26 06:28:52

+0

虽然这不是问题在这里,是意识到您可以通过GET方法传输的数据/长度有限(大约为一些kB) – kratenko 2012-06-05 11:09:56

回答

3

这不是长度问题,这是因为您希望您的一个GET参数(在此例中为url)包含&字符。您需要urlencode此字符,否则它将被解释为请求中的另一个GET参数,而不是url参数的一部分。

URL编码时,&将成为%26和您的查询字符串将成为本次,

goto.php?a_56=63525588000&url=http://www.example.com/site/DISC+cUSTOMc+Studio+24+-+Windows/1142766.p?id=1218224802931%26usi=1142766%26cmp=RMX%26ky=2crslw0k9ZOM0ciu2rqi4NsYY7eQnnEyP 
+0

好的,我认为其中的3个已经足够了:D – 2011-05-26 06:33:07

+0

@Wesley我在任何答案出现之前就开始写这篇文章了:p。这是真正花时间回答的问题之一,当你点击提交时,3个人已经跳入了相同的答案:(仍然..最好有三个相同的答案比没有回答:) – 2011-05-26 06:36:02

+1

我总是重新加载时,橙色的厄运下降,以确保我实际上添加的东西,而不是重复。正如我确信你知道的那样,人们喜欢在早期的一半回答中进行调整,然后对其进行微调。在这里,因为我们都在那里,所以要有同情票。不过,这需要5分钟才能输入? – 2011-05-26 06:38:36

3

它会被切断,因为它将url参数中的&视为实际的GET参数分隔符,如果不是。

您需要使用urlencode()来编码您的URL。

3

因为&指示查询字符串中键/值对的结尾。

使用urlencode准备包含在查询字符串中的数据。

+0

这链接到一个垃圾邮件网站。要更小心。 – 2011-05-26 07:02:00

+0

是的。错字,固定。实际上并不是一个垃圾邮件网站,它没有链接到任何公共DNS。听起来就像你的DNS提供商对任何没有真实站点的主机名称(或者你通过搜索引擎反弹)操作垃圾邮件响应 – Quentin 2011-05-26 07:02:39

+0

是的,我只是想知道这件事......它把我带到了真的很糟糕的弹出网站,不希望我离开。跳舞的小猫,免费的ipad,整个9.我想我是他们的第100万个访客。啊,我明白了,它被重定向为包含'.com' – 2011-05-26 07:08:07

3

&符号用于分隔外部查询字符串中的参数。如果您想在GET参数中使用它,则需要对其进行网址编码。