荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: pas (流星), 信区: Visual
标  题: 用VB编写标准CGI程序(7)
发信站: 荔园晨风BBS站 (Fri May 11 14:11:57 2001), 转信

  三 CGI编程实例

  本节将用VB编写一个处理主页客户留言簿的CGI程序。除了要调用本文前面所
介绍的Win32API函数外 程序中还调用了Win32API函数GetTempFileName()来获得
一个唯一的临时文件名。程序中的函数UrlDecode()用来对客户端的输入进行URL译
码。函数GetCgiValue()则用来分解字符串 根据表单元素的NAME属性获取其
VALUE值 并调用UrlDecode()函数对其进行URL译码。

  本程序要求在留言簿文件guests.html中使用一个定位串“<! ENDHEAD >”
将文件的开始部份和具体的客户留言部份分开。CGI程序将在“<! ENDHEAD >”所
在的位置插入客户新的留言。guests.html应具有如下所示的样式

  <html>

  <head><title>DHTML Zone </title></head>

  <body bgcolor="#FFFFFF" text="#00000" vlink="#990000"
link="#333399">

  <! ENDHEAD >

  <!---客户的留言部份从这开始-->

  <P>……………………….

  <!---客户的留言部份结束于此-->

  </body></html>

  这种样式将保证最后的留言出现在留言簿的最前面。如果要想使最后的留言出
现在留言簿的最后面 则只 将留言簿文件中的定位字符串“<! ENDHEAD >”移到
留言簿文件中客户留言部份和HTML文件结尾部份之间的位置就行了。整个程序的完
整代码如下所示

  'guestbook.bas

  Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As
Long) As Long

  Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long,
lpBuffer As Any,ByVal nNumberOfBytesToRead As Long,
lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long

  Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long,ByVal
 lpBuffer As String, ByVal nNumberOfBytesToWrite As Long,
lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long

  Declare Function GetTempFileName Lib "kernel32" Alias
"GetTempFileNameA"(ByVal lpszPath As String, ByVal lpPrefixString As
String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long


  Public Const STD_INPUT_HANDLE = -10&

  Public Const STD_OUTPUT_HANDLE = -11&

  Public Const FILE_BEGIN = 0&

  Public hStdIn As Long ' 标准输入文件句柄

  Public hStdOut As Long ' 标准输出文件句柄

  Public sFormData As String ' 用于存储没有经过URL译码的用户输入数据


  Public lContentLength As Long

  Public CGI_RequestMethod As String




--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.52.78]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店