VB電子教程教你制作一個網(wǎng)上征求意見的WindowsCGI應(yīng)用程序
大家用VB5.0也很長時間了吧,對于VB5.0給我們帶來的好處也深有體會,在這里VB電子教程教你制作一個關(guān)于網(wǎng)上征求意見的WindowsCGI應(yīng)用程序的一個小案例。
VB電子教程教你制作一個網(wǎng)上征求意見的WindowsCGI應(yīng)用程序
下面舉一個較復(fù)雜實用的WindowsCGI程序,它由4個子過程組成:CGI_Main(),EnterGuest(),ReturnForm()和Inter_Main();它的功能是:服務(wù)器向申請連接的Web客戶發(fā)出一張表單,Web客戶在表單里填入有關(guān)數(shù)據(jù)后送回服務(wù)器,服務(wù)器收到Web客戶的數(shù)據(jù)并將它們寫入一個文件中存儲起來,同時向Web客戶發(fā)送一個收條。這個WindowsCGI應(yīng)用程序的工作流程如下:一當Web客戶要求CGI連接,服務(wù)器運行該CGI程序,首先執(zhí)行CGI_Main()過程,CGI_Main()過程調(diào)用ReturnForm()向Web客戶送出一個表單,如果Web客戶填了意見表,并按鍵寄回服務(wù)器(此時過程CGI_Main()中CGI_RequestMethod="POST"成立)則由CGI_Main()過程調(diào)用EnterGuest()獲取客戶發(fā)來的數(shù)據(jù)并將其放入文件guestbk.csv中,同時向Web客戶返回一個信息回條表示客戶表單已收到。
由于編譯使用這個CGI程序的做法與上面完全相同,故下面僅給源程序代碼:
- OptionExplicit
- ConstBOOK_FILE="guestbk.csv"'存放客戶
- 數(shù)據(jù)的文件,自動生成,可用Excel97調(diào)閱
- DeclareSubSleepLib"kernel32"
- (ByValdwMillisecondsAsLong)
- SubCGI_Main()
- IfCGI_RequestMethod="POST"Then
- EnterGuest
- Beep
- Else
- ReturnForm
- EndIf
- EndSub'
一當Web客戶要求CGI連接,服務(wù)器執(zhí)行ReturnForm(),送出征求建議的表單:
- SubReturnForm()
- Send"Content-type:text/html"
- Send""
- Send("<HTML><HEAD><TITLE>貴州大學(xué)
- < SPAN>TITLE>< SPAN>HEAD>")
- Send("<BODY><H2>歡迎您訪問貴州
- 大學(xué)計算機軟件與理論研究所WWW站點< SPAN>H1>")
- Send("我們的e-mail是<AHREFAHREF=""mailto:"
- &CGI_ServerAdmin&_
- """>lixiang@gzu.edu.cn:< SPAN>A>")
- Send("<HR>")
- Send("請?zhí)钕卤恚粝履膶氋F建議:")
- Send("<FORMACTIONFORMACTION="""
- &CGI_ExecutablePath&"""METHOD=""POST"">")
- Send("<PRE>您的姓名:
- <INPUTSIZEINPUTSIZE=25NAME=""name"">")
- Send("E-mail地址:
- <INPUTSIZEINPUTSIZE=25NAME=""email"">")
- Send("您給我們的建議:<TEXTAREACOLSTEXTAREACOLS=40
- ROWS=4WRAP=VIRTUALNAME=""comments"">")
- Send("< SPAN>TEXTAREA>< SPAN>PRE>")
- Send("請擊此處將您的建議送我們:
- <INPUTTYPEINPUTTYPE=""submit""")
- Send("VALUE=""發(fā)送您的建議"">")
- Send("<HR>")
- Send("< SPAN>FORM>< SPAN>BODY>< SPAN>HTML>")
- EndSub
- '獲取客戶建議表單數(shù)據(jù),將所填數(shù)據(jù)存入文件guestbk.csv并向客戶返回一個信息
- SubEnterGuest()
- DimiLockTriesAsInteger
- DimsDateAsString
- DimsNameAsString
- DimsEmailAsString
- DimsCommentsAsString
- 'DimsBrowserAsString
- DimsFirstNameAsString
- DimfnAsInteger
- '提取建議的有關(guān)數(shù)據(jù):
- sName=GetSmallField("name")
- sEmail=GetSmallField("email")
- sComments=GetSmallField("comments")
- iLockTries=0
- fn=FreeFile
- OnErrorGoTogLockFail
- gRetryLock:
- OpenApp.Path+"\"+BOOK_FILEFor
- AppendLockReadWriteAs#fn
- OnErrorGoTo0
- sDate=Now
- Write#fn,sDate,sName,sEmail,
- sComments,CGI_RemoteAddr
- Close#fn
- sFirstName=Trim$(Left$(sName,
- InStr(sName,"")))
- IfsFirstName<>""
- ThensFirstName=sFirstName&","
- Send("Content-type:text/html")
- Send("")
- Send("<HTML><HEAD><TITLE>謝謝您!
- < SPAN>TITLE>< SPAN>HEAD>")
- Send("您的簽名與建議是:<PRE>")
- Send("日期:"&sDate)
- Send("姓名:"&sName)
- Send("E-Mail:"&sEmail)
- Send("Hostaddress:
- ["&CGI_RemoteAddr&"]")
- Send("建議:< SPAN>PRE>")
- Send(sComments)
- Send("<H2>謝謝您!< SPAN>H2>")
- Send("< SPAN>BODY>< SPAN>HTML>")
- ExitSub
- gLockFail:
- Sleep(1000)
- iLockTriesiLockTries=iLockTries+1
- ResumegRetryLock
- EndSub
- SubInter_Main()
- MsgBox"這是CGI程序,
- 需要在Web服務(wù)器中運行。",16,"CGI.BAS"
- EndSub
VB電子教程教你的案例,學(xué)會了嗎!
【編輯推薦】