明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

CGI圖文詳細教程(2)

[摘要]怎樣從服務器獲得信息  每次客戶端需要URL來對應CGI程序,服務器將實時執(zhí)行它。程序將直接輸出到客戶端。關于CGI的公用的誤解是你可以發(fā)送命令行選項和參數給你的程序,比如:command% myp...

怎樣從服務器獲得信息

  每次客戶端需要URL來對應CGI程序,服務器將實時執(zhí)行它。程序將直接輸出到客戶端。關于CGI的公用的誤解是你可以發(fā)送命令行選項和參數給你的程序,比如:

command% myprog -qa blorf

  CGI為其它目的使用命令行,這樣是不可能。相反,CGI使用環(huán)境變量來發(fā)送給程序它的參數。兩個重要的環(huán)境參數是:QUERY_STRING和PATH_INFO。

  QUERY_STRING被定義為在URL中跟在第一個?后面的內容。這個信息可以由ISINDEX文檔或者通過HTML表單(利用GET action)來增加。它同樣可以手動嵌入HTML錨,這個HTML錨可以引用你的網關。這個字符串就是一個信息查詢,比如用戶想搜索archie數據庫或者是你的反饋GET表單的編碼結果。

  這個字符串被在標準的URL編碼,其格式將空格轉換為+,并將特殊的字符利用%xx十六進制編碼。你為了使用它必須對它進行編碼。

  如果你的網關不是從表單來的編碼結果,你同樣可以利用命令行得到查詢字符串。這就意味著查詢字符串的每一個單詞將在ARGV的不同部分。比如,查詢字符串"forms rule"將以argv[1]="forms" 和 argv[2]="rule"傳遞給程序。如果你選擇這個,你在使用它之前不必做任何的處理。

  下面講講PATH_INFO 。CGI允許為你的網關在URL中嵌入額外的信息,這個網關可以用于傳遞額外的信息給腳本。這個信息通常是處在URL的網關路徑之后的額外信息。這個信息不能在服務器中以任何的方法來編碼。

  最亦用的PATH_INFO例子是傳遞文件位置給CGI程序。為了闡述這個,假設我們有一個CGI程序在服務器中,名為/cgi-bin/foobar,它可以處理在服務器的DocumentRoot中的文件。這時我需要通知foobar哪個文件要被處理。通過包括額外的路徑信息到URL的末尾,foobar通過PATH_INFO環(huán)境變量就知道了文檔位置相關的DocumentRoot,或者通過PATH TRANSLATED環(huán)境變量(服務器為你產生的)來知道文檔的真實路徑。