2015-06-02 94 views
2

當連接到PayPal我用這樣的URL(我在這裏使用假值,但結構是真實的):貝寶被截斷我返回查詢字符串

https://www.paypal.com/cgi-bin/webscr?&business=ZDS346347&cmd=_xclick&amount=100&item_name=Test&no_note=1&no_shipping=1&rm=2&return=http://www.website.com/registration.php?paypal=1&classid=122&sessionid=264&studentid=2286

問題是,當我送這個URL,它截斷從此我的返回值的查詢字符串:

paypal=1&classid=122&sessionid=264&studentid=2286 

這樣:

paypal=1 

返回值中的和號混淆了它,但我需要使用它們,以便可以在返回時處理這些查詢字符串值。

有沒有辦法,我可以將整個返回字符串傳遞給PayPal,以便它在第一個&符號後不會被截斷。

感謝,

克里斯

回答

0

包裹傳遞的URL與urlencode打開與號爲貝寶解析的字符,那麼當你的網址被稱爲使用urldecode來解碼。

發生這種情況是因爲PayPal的網址將?之後的所有內容簡單地拆分爲&符號的區塊。它不知道什麼時候是你的網站的一部分。所以它會發送PayPal classid=122作爲自己的鍵/值對,而不是您網址的一部分。以這種方式對URL進行編碼應使其正常工作。

編輯引用錯誤的PHP函數。進行urlencode /解碼是GET參數傳遞,用htmlspecialchars是用於存儲 HTML數據

+0

我可以看到我如何使用用htmlspecialchars使字符串不是由貝寶會出現問題,但後來當PayPal發送我的客戶回來了,它贏得不會將它發送回正確的字符串 - 它會將其發送迴帶有特殊字符的字符串。那時候,解碼它會遲到 - 或者我錯過了什麼? –

+0

請參閱編輯!意思是URLENCODE! PayPal _may_會自動正確調用回叫網址。我老實說不是100%確定,但我會先測試一下。我懷疑你需要做更多的工作。如果它不起作用,那就意味着你的'$ _GET'只有一個大字符串,只有第一個參數(在你的例子中,「paypal」等於其他所有內容)。簡單地得到那個混亂的字符串,解碼並爆炸,就像這樣:'$ gets = explode('&',urldecode($ _ GET ['paypal']));'現在你可以把'gets'當作' $ _GET',設置正確。儘管如此,我懷疑PayPal會正確回撥。 – Bing

+0

謝謝,URLENCODE做到了! –