歡迎您光臨本站 註冊首頁

用C語言技術進行CGI程序設計

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

一、CGI概述 CGI(公用網關介面)規定了Web伺服器調用其他可執行程序(CGI程 序)的介面協議標準。Web伺服器通過調用CGI程序實現和Web瀏覽器的交互 ,也就是CGI程序接受Web瀏覽器發送給Web伺服器的信息,進行處理,將響應結果再回送給Web伺服器及Web瀏覽器。CGI程序一般完成Web網頁中表單(Form)數據的處理、資料庫查詢和實現與傳統應用系統的集成等工作。CGI程序可以用任何程序設計語言編寫,如Shell腳本語言、Perl、Fortran、Pascal、C語言等。但是用C語言編寫的CGI程序具有執行速度快、安全性高(因為C語言程序是編譯執行且不可被修改)等特點。 CGI介面標準包括標準輸入、環境變數、標準輸出三部分。 1.標準輸入 CGI程序像其他可執行程序一樣,可通過標準輸入(stdin)從Web伺服器得到輸入信息,如Form中的數據,這就是所謂的向CGI程序傳遞數據的POST方法。這意味著在操作系統命令行狀態可執行CGI程序,對CGI程序進行調試。POST方法是常用的方法,本文將以此方法為例,分析CGI程序設計的方法、過程和技巧。 2.環境變數 操作系統提供了許多環境變數,它們定義了程序的執行環境,應用程序可以存取它們。Web伺服器和CGI介面又另外設置了自己的一些環境變數,用來向CGI程序傳遞一些重要的參數。CGI的GET方法還通過 環境變數QUERY-STRING向CGI程序傳遞Form中的數據。 3.標準輸出 CGI程序通過標準輸出(stdout)將輸出信息傳送給Web伺服器。傳送給Web伺服器的信息可以用各種格式,通常是以純文本或者HTML文本的形式,這樣我們就可以在命令行狀態調試CGI程序,並且得到它們的輸出。 下面是一個簡單的CGI程序,它將HTML中Form的信息直接輸出到Web瀏覽器。 #include #include main() {  int,i,n; printf (″Contenttype:text/plain\n\n″); n=0; if(getenv(″CONTENT-LENGTH″)) n=atoi(getenv(CONTENT-LENGTH″)); for (i=0;i putchar(getchar()); putchar (′\n′); fflush(stdout); } 下面對此程序作一下簡要的分析。:  prinft (″Contenttype:text/plain\n\n″); 此行通過標準輸出將字元串″Contenttype:text/plain\n\n″傳送給Web伺服器。它是一個MIME頭信息,它告訴Web伺服器隨後的輸出是以純ASCII文本的形式。請注意在這個頭信息中有兩個新行符,這是因為Web伺服器需要在實際的文本信息開始之前先看見一個空行。 if (getenv(″CONTENT-LENGTH″)) n=atoi (getenv(″CONTENT-LENGTH″)); 此行首先檢查環境變數CONTENT-LENGTH是否存在。Web伺服器在調用使用POST方法的CGI程序時設置此環境變數,它的文本值表示Web伺服器傳送給CGI程序的輸入中的字元數目,因此我們使用函數atoi() 將此環境變數的值轉換成整數,並賦給變數n。請注意Web伺服器並不以文件結束符來終止它的輸出,所以如果不檢查環境變數CONTENT-LENGTH,CGI程序就無法知道什麼時候輸入結束了 for (i=0;i #include main() {  printf(″Contenttype:text/html\n\n″); printf(″\n″); printf(″An HTML Page From a CGI\n″); printf(″
\n″); printf(″

This is an HTML page generated from with i n a CGI program.. .

\n″); printf(″

\n″); printf(″ Go back to out put.html page < /b>\n″); printf(″\n″); printf(″\n″); fflush(stdout); } 上面的CGI程序簡單地用printf()函數來產生HTML源代碼。請注意在輸出的字元串中如果有雙引號,在其前面必須有一個后斜字元\, 這是因為整個HTML代碼串已經在雙引號內,所以HTML代碼串中的雙引號符必須用一個后斜字元\來轉義。 五、結束語 本文詳細分析了用C語言進行CGI程序設計的方法、過程和技巧。C語言的CGI程序雖然執行速度快、可靠性高,但是相對於Perl語言來說,C語言缺乏強有力的字元串處理能力,因此在實際應用中,應根據需 要和個人愛好來選擇合適的CGI程序設計語言。


[火星人 ] 用C語言技術進行CGI程序設計已經有734次圍觀

http://coctec.com/docs/linux/show-post-190212.html