PHP的url傳值學習筆記
1. 頁面中的源碼在顯示在瀏覽器的時候, 瀏覽器會解釋 HTML 轉義符號 因此如果要顯示特殊字元,如 ‘<’,’>’等,在源碼中可以是<>2. PHP在echo進行顯示的時候,如果要顯示‘<’,’>’可以這樣處理echo htmlspecialchars(‘<>’);htmlspecialchars 可以處理以下字元'&' ,'"', ''' , '<' , '>' # '&' (ampersand) becomes '&'# '"' (double quote) becomes '"' when ENT_NOQUOTES is not set.# ''' (single quote) becomes ''' only when ENT_QUOTES is set.# '<' (less than) becomes '<'# '>' (greater than) becomes '>'3. 當要手動構造url的時候的方法 echo "\n";但是要把構造的url用於js的跳轉,則不能用htmlspecialchars(詳情見5.)4. IE,FireFox會對href=”url” 的url進行Un_htmlspecialchars(滑鼠移上去後可以在瀏覽器狀態列看到)也就是因為html會自動認識象"&"這樣的實體然後提交的時候還會 進行urlencode()變數然後提交PHP中的含義是:除了-_. 之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數,空格則編碼為加號(+)。#號比較特殊,如果要傳輸#號,可以在url欄輸入%23 或者使用3.的方法?5. 但是在JS中window.location=”url”的url中如果存在"&"這樣的字元就不會正常進行跳轉了,原因是JS"&"只是把他們看作正常字元而已 但是都會進行urlencode()然後提交(滑鼠移上去後可以在瀏覽器狀態列看到) 所以使用PHP變數在JS中嵌入url地址時要特別注意6. 當提交時,不論是 GET 或者 POST 方法,資料都會被瀏覽器進行 urlencode 來傳輸(第5點),並直接被 PHP urldecode。所以最終不需要自己處理任何 urlencoding/urldecoding,全都是自動處理的。7.如果要在瀏覽器中發送表單或資料給伺服器端,使用GET或POST方法都能實現。GET方法是在訪問URL時,使用瀏覽器地址欄來傳遞值。我們可以在很多網站上看到這類URL串。GET方法方便直觀,缺點是訪問該網站的使用者也可以修改URL串後發送給伺服器,如果程式處理得不夠好很容易出錯,而且GET傳遞的字串長度不能超過250個字元,如果超長,瀏覽器會自動截斷,導致資料缺失。另外,GET方法不支援ASCII字元之外的任何字元,比如包含有漢字或其他非 ASCII字元時,需要使用額外的編碼操作,雖然有時候瀏覽器也能自動完成(可以使用url_encode和url_decode函數)。POST方法發送變數資料時,對於使用者來說是不透明的,按HTTP協議來說,資料附加於header的頭資訊中,使用者不能隨意修改,這對於Web應用程式而言,安全性要好得多,而且使用POST可以發送大體積的資料給Web伺服器。因為POST是隨HTTP的header資訊一起發送的,當觸發POST表單提交後,如果使用者瀏覽頁面時單擊[上一頁] 按鈕,瀏覽器不會自動重發 POST資料。如果使用者此時單擊[重新整理] 按鈕,將會有“資料已經到期,是否重新提交表單”的提示,這一點不如GET使用方便。使用GET傳值時,即便使用者使用“後退”或[重新整理] 按鈕,瀏覽器的URL地址也是仍然存在的。因此,我們在開發中需要根據實際應用靈活選擇GET和POST來提交表單資料。值得一提的是,如果在HTML中缺少表單結束標記,那麼整個表單是不會觸發任何提交動作的。在實際開發時,一些粗心的人會發現單擊按鈕沒有任何反映,其實細心檢查一下表單的代碼就可以了,有時即使少寫了一個HTML字元,瀏覽器也不會替我們幹活的。8.index.php?a=urlencode('+');urldecode( $_GET['a'] ) = ' '; urlencode 將空格則編碼為加號(+)。 rawurlencode將空格替換成百分比符號(%)後跟兩位十六進位數 可以使用rawurlencode()與rawurldecode()來避免這個錯誤 9.urlencode()返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 資料的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。