2011-05-26 131 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參數中使用它,則需要對其進行網址編碼。