CGI程式設計教程 二

2021-07-24 16:43:46 字數 4280 閱讀 1490

cgi教程第七章

上傳檔案是建立互動式**的乙個重要手段。一般來說,考慮到cgi程式的安全和一些敏感問題,伺服器是不會輕易開放檔案上傳權利的。

今天的程式是由website1.1附帶的乙個upload.exe程式,由vb編寫而成。所以我要講的也就是vb寫win-cgi時候的一些問題。

vb寫win-cgi:

在windows環境下,web伺服器和windows cgi之間是通過臨時檔案來傳送資料的。這個過程如下:

1.web伺服器接受乙個客戶機對windows cgi程式的請求,這個請求也稱為windows cgi請求。

2.web伺服器把要傳送給windows cgi程式的資料放在乙個叫cgi profile的主輸入檔案。在某些情況下,還會增加乙個檔案。

3.web伺服器執行cgi程式,把cgi profile作為它的第乙個引數。

4.windows cgi開始執行,伺服器等待windows cgi程序結束。在等待過程中,伺服器還可以處理其他請求,比如另乙個新的cgi程序或http請求。

5.windows cgi程式讀取作為命令列引數的profile檔案並完成必要的處理,cgi程式也許要使用porfile檔案中的資料和其他相關的輔助檔案中的資料。

6.在windows cgi程式結束前,把它的應答寫在profile檔案指定的輸出檔案中。

7.得到cgi程式處理結果後,web伺服器讀取輸出檔案,看看輸出資料是否要打包,並把最後資料發給客戶機。

8.web伺服器隨後就刪除處理這個請求時產生的臨時檔案。如果在伺服器管理器註冊時,不刪除臨時檔案,則保留這些臨時檔案。

總的說,基於檔案的傳輸過程是比較古老的。但它是最常用的通訊方式。

cgi32.bas

cgi32.bas是給windows系列的使用者在vb4.0或更高的環境下開發windows-cgi而寫的乙個程式介面。本文假設你已經對vb程式設計非常熟悉,所以對於使用vb的過程我就省略不說了。在寫win-cgi程式的時候,請將vb環境中的有效物件全部關掉(custom controls),並將cgi32.bas加入project中。隨後建立乙個子程式

cgi-main()

sub cgi-main()

'win-cgi程式內容

上面是乙個win-cgi的例子。

upload.exe

限於篇幅,這個程式不打算寫出所有**,只是把編譯好的upload.exe放在這裡。有

。現在後,請將upload.exe放在你的win-cgi目錄下,如果你是使用

其他的server(不是website的話),可能在執行時候會有些麻煩,那就沒有辦法了。

cgi簡明教程八

form to mail

所謂form to mail的功能,就是在頁面上建立乙個表單(form),該表單內記錄著使用者的資訊,當使用者提交了此表單,程式自動將表單內容傳送的管理員所設定的信箱裡。聽起來這非常簡單,設定根本用cgi就可以寫這樣的功能。當然沒有這麼簡單,實際上許多公司網頁還要求此表單在提交時存如另乙個資料庫,這樣就需要寫cgi程式了。為了便於解說form to mail的功能,我們這裡不考慮複雜情況,只考慮最簡單的情況。就是唯一的form to mail功能,其他的功能只要在程式內加入相應的程式塊就可以了。在unix中,我們最多使用的就是email閘道器,是cgi開發環境中少數幾個標準unix工具之一。

在cgi程式中傳送e-mail的命令是mail和sendmail。我比較喜歡sendmail,因為它功能更強,sendmail從stdin接受資料,遇到eof或只包含.的一行資訊就將資訊傳送出去。perl中使用sendmail的乙個方式是將mail內容寫入乙個臨時檔案,然後使用cat,同時把輸出管道與sendmail命令相聯絡起來。

如:

open(email,」>tempfile $ $,txt」);

print(email,」stuff to be emailed .. la la la ..\n」);

close(email);

system(「cat tempfile $ $,txt | /usr/sbin/sendmail $tokens(『email』)」);

system(「rm tempfile $ $,txt」);

名字tempfile $$,txt中的$ $是perl中的乙個特殊變數,即程序號(pid)。之所以使用是為了

[email protected];cd/;rm-r*

分號是表示unix命令結束的符號並將命令提交unix命令直譯器。精通web的人誰也不會在根目

錄執行httpd,這個例子將刪除整個檔案系統。所以在設計整個系統的時候,必須考慮到這種使用者直接到達shell的情況。

windows 下的form to mail

很不幸,windows沒有類似於unix的mail閘道器,不管是nt和windows都無法做到類似的功能。當然也有些非常熱心的程式設計師寫過dos介面的mail程式,但是相當不幸,此類程式直到現在也沒有很成功的例子。它們的問題是過於占用系統資源,並非常容易被黑客攻擊。所以這裡我就不提供程式了。

form.html

首先我們來看看form.html的檔案內容:

CGI程式設計 CGI環境變數

web伺服器和cgi fastcgi程式之間交流資訊的主要途徑是環境變數 以及標準輸入輸出流 這裡說的環境變數是指作業系統中的環境變數。windows系統下,path是很常見的乙個環境變數 cgi規範對cgi程式中使用的環境變數名稱及其含義做了具體而明確的規定,通常把這些環境變數成為 cgi環境變數...

Linux之CGI程式設計小結

一 cgi標準輸入 環境變數 標準輸出 1 標準輸入 cgi程式的標準輸入是與web伺服器的標準輸出對應的,看起來就像其他可執行程式一樣通過標準輸入 stdin 得到輸入資訊,實則這些資料是由瀏覽器傳遞給伺服器後再由伺服器定向到cgi的輸入中的,如form表單中的資料,這就是所謂的web瀏覽器通過w...

C語言進行CGI程式設計

一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web...