傳遞資料給 CGI 程式的方法有 2 種:GET 與 POST。GET 與 POST 是兩種不同的資料傳遞方式。
GET 方法
GET 會將資料當成是 URL 的一部份,例如:
http://www.jollen.org/view.php?page=15&number=75
「?」問題區隔 CGI 程式的名稱與資料,資料間以「&」(AND) 符號隔開,每筆資料都是 name=value 的格式。? 問號後的字串即為要送給伺服器端的資料,送入的資料會被擺放至 QUERY_STRING 環境變數裡,CGI 程式可以經由 QUERY_STRING 環境變數來讀取送入的資料。
POST 方法
POST 會以標準輸入的方式將資料送給 CGI 程式,CGI 程式則經由標準輸入來讀取這些資料。由表單送入的資料一樣都是 name=value 的格式,送入資料的字串長度則被存放在 CONTENT_LENGTH 的環境變數裡。
實際在傳送資料時,瀏覽器先向伺服器送出一個 request,再將資料送給伺服器:
POST /view.php HTTP/1.0 . .header 的部份 . Content-length: 32 name=value . . .
那麼,到底我們的程式要如何知道用戶端是使用那一種方式來傳遞資料呢?在 PHP 裡,不管是那一種方式,由表單送入的 name=value 資料格式都可以經由全域變數 $name 來讀取。
在其它 CGI 程式裡,可以利用 REQUEST_METHOD 環境變數來判斷資料的傳遞方式,當資料的傳遞方式是 GET 時,REQUEST_METHOD = "GET",同理,當資料的傳遞方式是 POST 時,REQUEST_METHOD = "POST"。
GET 與 POST 之間最大的差異在於:
1. 使用 GET 可以不必利用表單即可傳送參數給 CGI 程式。
2. 使用 GET 時,URL 有長度限制。
3. 使用 POST 時,傳入的字串長度沒有限制。
--jollen