CGI腳本是什么?
CGI腳本是怎樣工作的?
一個簡單的例子
我能用CGI腳本嗎?
你的服務器配置允許CGI腳本嗎?
你能編程嗎?
你應該用什么編程語言?
你的服務器設置正確嗎?
如果你的服務器不是UNIX系統呢?
解剖CGI腳本
輸出頭部
輸出數據部
帶闡述的腳本
傳遞其他信息給腳本
創建特殊的腳本輸出
以裝載另一個文本響應
無響應
處理表單的腳本
表單格式和表單腳本
GET 和 POST
URL 編碼
問題
CGI 變量
解碼程序
uncgi
cgi-lib.pl
解碼文件上傳的輸入
自己做
非解剖的頭部腳本
總結
學習CGI腳本(腳本)CGI 意思為 Common Gateway Interface, 一種基于瀏覽器的輸入、在Web服務器上運行的程序方法. CGI腳本 使你的瀏覽器與用戶能交互,為了在數據庫中尋找一個名詞, 提供你寫入的評論,或者從一個表單中選擇幾個條目并且能得到一個明確的回答. 如果你曾經遇到過在web上填表或進行搜索, 你就是用的CGI腳本. 你那時也許沒有意識到,因為大部分工作是在服務器上運行的,你看到的只是結果.
作為一個網頁設計者, 你創建客戶端的 CGI腳本, 服務器端的程序用來處理用戶輸入, 結果返回給用戶.
在這里你將學習關于CGI腳本的一切:
CGI腳本是什么?它是怎樣工作的
一個CGI腳本輸出象什么?
怎樣用參數或無參數創建一個CGI腳本
怎樣創建一個返回規定響應的CGI腳本
怎樣創建一個輸入表單的CGI腳本
有關在使用CGI腳本中的問題
你能在腳本中使用的CGI變量
本章節假設在UNIX系統下的。
CGI腳本是什么?CGI腳本簡單地講是個運行在Web服務器上的程序, 有瀏覽器的輸入觸發. 這個腳本通常象服務器和系統中其他程序如數據庫的橋梁。
CGI 腳本難道不是一個真正的腳本?按照你的服務器的支持, 他們可能是一個編譯好的程序或者批命令文件或者其他可執行的東西. 為了簡單起見,我們統稱他們為腳本scripts.
CGI 腳本是任何運行在web服務器上的程序. CGI意思是Common Gateway Interface。
CGI腳本是用下列兩種方法使用的: 作為一個表單的ACTION 或 作為一個頁中的直接link。 CGI腳本是怎樣工作的?CGI腳本有服務器調用, 基于瀏覽器的數據輸入. 圖1 顯示在瀏覽器、服務器和腳本之間是怎樣的一個流程.
圖1. 從瀏覽器到服務器到腳本到程序 記住再回來噢!
這有個簡短的示意解釋:
一個URL指向一個CGI腳本. 一個CGI腳本的URL能如普通的URL一樣在任何地方出現。
服務器接收請求, 按照那個URL指向的腳本文件(注意文件的位置和擴展名),執行腳本.
腳本執行基于輸入數據的操作,包括查詢數據庫、計算數值或調用系統中其他程序.
腳本產生某種Web服務器能理解的輸出結果.
服務器接收來自腳本的輸出并且把它傳回瀏覽器,讓用戶了解結果。
一個簡單的例子這里詳細一步一步地解釋所有有關發生的細節。
在圖2中有個例圖:
圖2. 帶有一個腳本連接的頁.
Display Date處是個指向CGI腳本的連接. 它的HTML是這樣的: <A >Display the Date</A>說明是個CGI腳本是因為這里面有個cgi-bin的路徑. 在許多服務器cgi-bin是僅能夠放置CGI腳本的目錄.
當你選擇這個連接時, 你的瀏覽器將向服務器提出請求. 服務器接收這個請求計算出URL處的腳本文件名然后執行這個腳本.
這個getdate腳本, 在UNIX系統中執行是這樣的: #!/bin/sh echo Content-type: text/plain echo /bin/date第一行是個特殊的命令,告訴UNIX系統這是個shell腳本; 真實的情況是從這行開始的下一行,這個腳本做兩件事:它輸出行Content-type: text/plain, 接著開始一個空行;第二, 它調用UNIX系統時間date程序, 這樣輸出日期和時間. 腳本執行后輸出應該這樣: Content-type: text/plain Tue Oct 25 16:15:57 EDT 1994這個Content-type是什么東東?它是個特殊的編碼,Web服務器用來告訴瀏覽器輸出這個文本是什么類型的. 這與HTML中Content-type含義是一樣的。
這樣瀏覽器的輸出就如圖3.
圖3 date腳本輸出結果.
這是最基本的,實際情況要復雜得多,總之可以用來理解瀏覽器、服務器和腳本之間是怎樣工作的。 我能用CGI腳本嗎?在你使用CGI腳本之前,有兩件事你也許要解決:CGI腳本 是個高級的Web特性并且需要你和Web 服務器管理者一樣好的知識。
肯定嗎?就是做不到,學學也可以?好吧!讓我們繼續. 你的服務器配置允許CGI腳本嗎?為了能寫和運行CGI腳本, 你需要一個Web服務器. 不象通常的HTML文件, 你不能在本地系統上寫或試驗你的CGI腳本; 你得通過Web服務器來做這個.
但是即使你有一個Web服務器, 這個服務器必須特別地為運行CGI腳本配置一下. 那意味著你所有的腳本必須放置在一個叫做cgi-bin的目錄下.
下一篇:高中生物學習方法整理