2010-11-17 43 views
2

我爲我的網站構建了一個小型搜索腳本。我需要通過get方法發送數據,因爲通過POST它會變得非常混亂,因爲我必須顯示許多搜索結果頁面。我可以通過PHP中的get方法發送任何字符嗎?

所以,我的問題是我可以直接使用get方法嗎?意味着我是否需要編碼url或其他任何東西? 我在現代瀏覽器中檢查過它。它的工作原理就好了..

感謝

編輯:在URL puting變量時 URLEncode的使用。

我使用method ='get'提交我的搜索表單然後,我得到變量並執行搜索查詢並使用變量數據創建新頁面鏈接。 - 長度,大小不是概率。 U人建議我應該使用urlencode func。同時只有新的鏈接???

+1

HTTP GET限制在2KiBytes的長度 – stillstanding 2010-11-17 10:38:32

+1

@stillstanding - 從技術上講,GET不是限制,但瀏覽器是 - ie6 barfs在超過1024個字符的URL - 如果我沒有記錯,ie7支持到4k。 Apache幾乎可以處理任何事情。也就是說,如果你的數據長度接近於任何數據,你可能需要考慮改變你的方法 - 這不是GET的目的。 – Basic 2011-06-11 20:20:21

回答

4

您可以也應該對可能包含空格和其他URL不友好字符的數據使用urlencode()。

http://php.net/manual/en/function.urlencode.php

+1

我認爲你應該使用它,而不管你期望在變量中 - 只有很小的開銷,當你將來更改代碼時它可以防止事情中斷 - 但我完全同意 – Basic 2010-11-17 10:33:38

2

您需要將URL上的參數進行編碼,例如http://www.example.com/MyScript.php?MyVariable=%3FSome%20thing%3F

請注意,可以通過GET發送多少數據的限制 - 對舊版瀏覽器的限制較多。如果我沒有記錯的話,IE6在網址中的限制爲1024個字符,所以如果您認爲您要考慮這一點,請考慮使用POST,否則您可能會排除某些用戶。

2

您應該使用urlencode($variable)Link)收到後發送的變量(即使瀏覽器通常會照顧這個問題)和urldecode ($variable)Link)之前,這樣可以確保特殊字符會正確處理。

+0

如果我錯了,糾正我我在一段時間內沒有使用過PHP,但如果我沒有記錯的話,當它通過'$ _REQUEST','$ _GET'和'$ _POST'變量暴露參數時,PHP會爲您處理URL Decoding ... – Basic 2010-11-17 10:35:33

+0

那麼,那是對的 – Thariama 2010-11-17 10:45:12

+0

我也這麼認爲。因爲我在處理我複雜的搜索算法時沒有遇到任何問題。我只是很好奇,如果舊的瀏覽器在發送表單時做了一些愚蠢的事情,或者只是打破錶單提交到的頁面的新網址。 – Sunny 2010-11-17 13:35:06

相關問題