用C語言技術進行CGI程式設計(轉)
用C語言技術進行CGI程式設計(轉)[@more@]一、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=0; if(getenv(″CONTENT-LENGTH″)) n=atoi(getenv(CONTENT-LENGTH″)); for (i=0;i putchar(getchar()); putchar (′
′); fflush(stdout); } 下面對此程式作一下簡要的分析。: prinft (″Contenttype:text/plain
″); 此行透過標準輸出將字串″Contenttype:text/plain
″傳送給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
″); printf(″
″); printf(″
″); printf(″
″); printf(″
″); printf(″
This is an HTML page generated from with i n a CGI program.. .
″); printf(″″); printf(″ ″); printf(″ ″); printf(″ ″); fflush(stdout); } 上面的CGI程式簡單地用printf()函式來產生HTML原始碼。請注意在輸出的字串中如果有雙引號,在其前面必須有一個後斜字元, 這是因為整個HTML程式碼串已經在雙引號內,所以HTML程式碼串中的雙引號符必須用一個後斜字元來轉義。 五、結束語 本文詳細分析了用C語言進行CGI程式設計的方法、過程和技巧。C語言的CGI程式雖然執行速度快、可靠性高,但是相對於Perl語言來說,C語言缺乏強有力的字串處理能力,因此在實際應用中,應根據需 要和個人愛好來選擇合適的CGI程式設計語言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-957384/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 卡馬克:用C++進行函數語言程式設計C++函數程式設計
- C 語言程式設計(unix) (轉)程式設計
- Battleship程式設計語言與技術BAT程式設計
- C語言程式設計C語言程式設計
- Matlab與C語言程式的應用程式設計介面(轉)MatlabC語言程式設計
- Linux下C語言程式設計(轉)LinuxC語言程式設計
- [Linux C]CGI程式設計Linux程式設計
- C語言指標應用程式設計C語言指標程式設計
- C語言高效程式設計的幾招(轉)C語言程式設計
- C語言 之 多執行緒程式設計C語言執行緒程式設計
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- Java技術分享之函數語言程式設計!Java函數程式設計
- Java技術分享之函數語言程式設計Java函數程式設計
- 跨語言程式設計的探索 | 龍蜥技術程式設計
- Java技術:使您輕鬆地進行多執行緒應用程式程式設計(2)(轉)Java執行緒程式設計
- 使用 JavaScript 進行函數語言程式設計 (一)JavaScript函數程式設計
- Java如何呼叫C語言程式,JNI技術JavaC語言
- Bjarne Stroustrup:概觀C++程式設計語言 (轉)JARC++程式設計
- Linux下C語言程式設計簡介(轉)LinuxC語言程式設計
- 用C語言編寫Linux實用程式的藝術(轉)C語言Linux
- C語言MySQL程式設計示例C語言MySql程式設計
- 結對程式設計(c語言)程式設計C語言
- C語言高效程式設計的的四招技巧[轉]C語言程式設計
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- 實驗3 c語言函式應用程式設計C語言函式程式設計
- 實驗3 C語言函式應用程式設計C語言函式程式設計
- 實驗5 C語言指標應用程式設計C語言指標程式設計
- 實驗4 c語言陣列應用程式設計C語言陣列程式設計
- C 語言程式設計利器之 CLion程式設計
- C#函數語言程式設計C#函數程式設計
- C語言程式設計基本規範C語言程式設計
- MySQL的C語言程式設計(一)MySqlC語言程式設計
- Linux下C語言程式設計基礎知識(轉)LinuxC語言程式設計
- 程式設計師用什麼語言:技術為王還是產品為王程式設計師
- C++ web程式設計:寫出你的CGI程式C++Web程式設計
- 實驗3_C語言函式應用程式設計C語言函式程式設計
- 實驗4_C語言陣列應用程式設計C語言陣列程式設計