大家用VB5.0也很长时间了吧,对于VB5.0给我们带来的好处也深有体会,在这里VB电子教程教你制作一个关于网上征求意见的WindowsCGI应用程序的一个小案例。
VB电子教程教你制作一个网上征求意见的WindowsCGI应用程序
下面举一个较复杂实用的WindowsCGI程序,它由4个子过程组成:CGI_Main(),EnterGuest(),ReturnForm()和Inter_Main();它的功能是:服务器向申请连接的Web客户发出一张表单,Web客户在表单里填入有关数据后送回服务器,服务器收到Web客户的数据并将它们写入一个文件中存储起来,同时向Web客户发送一个收条。这个WindowsCGI应用程序的工作流程如下:一当Web客户要求CGI连接,服务器运行该CGI程序,首先执行CGI_Main()过程,CGI_Main()过程调用ReturnForm()向Web客户送出一个表单,如果Web客户填了意见表,并按键寄回服务器(此时过程CGI_Main()中CGI_RequestMethod="POST"成立)则由CGI_Main()过程调用EnterGuest()获取客户发来的数据并将其放入文件guestbk.csv中,同时向Web客户返回一个信息回条表示客户表单已收到。
由于编译使用这个CGI程序的做法与上面完全相同,故下面仅给源程序代码:
- OptionExplicit
- ConstBOOK_FILE="guestbk.csv"'存放客户
- 数据的文件,自动生成,可用Excel97调阅
- DeclareSubSleepLib"kernel32"
- (ByValdwMillisecondsAsLong)
- SubCGI_Main()
- IfCGI_RequestMethod="POST"Then
- EnterGuest
- Beep
- Else
- ReturnForm
- EndIf
- EndSub'
一当Web客户要求CGI连接,服务器执行ReturnForm(),送出征求建议的表单:
- SubReturnForm()
- Send"Content-type:text/html"
- Send""
- Send("<HTML><HEAD><TITLE>贵州大学
- < SPAN>TITLE>< SPAN>HEAD>")
- Send("<BODY><H2>欢迎您访问贵州
- 大学计算机软件与理论研究所WWW站点< SPAN>H1>")
- Send("我们的e-mail是<AHREFAHREF=""mailto:"
- &CGI_ServerAdmin&_
- """>lixiang@gzu.edu.cn:< SPAN>A>")
- Send("<HR>")
- Send("请填下表,留下您的宝贵建议:")
- 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=""发送您的建议"">")
- Send("<HR>")
- Send("< SPAN>FORM>< SPAN>BODY>< SPAN>HTML>")
- EndSub
- '获取客户建议表单数据,将所填数据存入文件guestbk.csv并向客户返回一个信息
- SubEnterGuest()
- DimiLockTriesAsInteger
- DimsDateAsString
- DimsNameAsString
- DimsEmailAsString
- DimsCommentsAsString
- 'DimsBrowserAsString
- DimsFirstNameAsString
- DimfnAsInteger
- '提取建议的有关数据:
- 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服务器中运行。",16,"CGI.BAS"
- EndSub
VB电子教程教你的案例,学会了吗!
【编辑推荐】