📄 90.htm
字号:
<p> 〈! ENDHEAD 〉 </p>
<p></p>
<p> 〈!---客户的留言部分从这开始--〉 </p>
<p></p>
<p> 〈P〉............................ </p>
<p></p>
<p> 〈!---客户的留言部分结束于此--〉 </p>
<p></p>
<p> 〈/body〉〈/html〉 </p>
<p></p>
<p> 这种形式将保证最后的留言出现在留言簿的最前面。如果要想使最后的留言出现在留言簿的最后面,只需将留言簿文件中的定位字符串“〈! ENDHEAD 〉”移到留言簿文件中客户留言部分和HTML文件结尾部分之间的位置就行了。整个程序的完整代码如下所示: </p>
<p></p>
<p> 'guestbook.bas </p>
<p></p>
<p> Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long </p>
<p></p>
<p> Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, _ </p>
<p></p>
<p> ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, _ </p>
<p></p>
<p> lpOverlapped As Any) As Long </p>
<p></p>
<p> Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, _ </p>
<p></p>
<p> ByVal lpBuffer As String, ByVal nNumberOfBytesToWrite As Long, _ </p>
<p></p>
<p> lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long </p>
<p></p>
<p> Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" _ </p>
<p></p>
<p> (ByVal lpszPath As String, ByVal lpPrefixString As String, _ </p>
<p></p>
<p> ByVal wUnique As Long, ByVal lpTempFileName As String) As Long </p>
<p></p>
<p> Public Const STD_INPUT_HANDLE = -10& </p>
<p></p>
<p> Public Const STD_OUTPUT_HANDLE = -11& </p>
<p></p>
<p> Public Const FILE_BEGIN = 0& </p>
<p></p>
<p> Public hStdIn As Long ' 标准输入文件句柄 </p>
<p></p>
<p> Public hStdOut As Long ' 标准输出文件句柄 </p>
<p></p>
<p> Public sFormData As String ' 用于存储没有经过URL译码的用户输入数据 </p>
<p></p>
<p> Public lContentLength As Long </p>
<p></p>
<p> Public CGI_RequestMethod As String </p>
<p></p>
<p> Sub Main() </p>
<p></p>
<p> Dim CGI_ContentLength As String, CGI_QueryString As String, sBuff As String, chinesetail As String </p>
<p></p>
<p> Dim lBytesRead As Long, rc As Long,I As Long </p>
<p></p>
<p> Dim sEmail As String, sName As String, sURL As String, sfrom As String, tempstring As String </p>
<p></p>
<p> Dim sComment As String, tempFileName As String, guestbook As String </p>
<p></p>
<p> 'CGI程序的初始化工作 </p>
<p></p>
<p> hStdIn = GetStdHandle(STD_INPUT_HANDLE) </p>
<p></p>
<p> hStdOut = GetStdHandle(STD_OUTPUT_HANDLE) </p>
<p></p>
<p> CGI_RequestMethod = Environ("REQUEST_METHOD") </p>
<p></p>
<p> CGI_QueryString = Environ("QUERY_STRING") </p>
<p></p>
<p> CGI_ContentLength = Environ("CONTENT_LENGTH") </p>
<p></p>
<p> lContentLength = Val(CGI_ContentLength) </p>
<p></p>
<p> sBuff = String(lContentLength, Chr$(0)) </p>
<p></p>
<p> OutPut "Content-type: text/html" & vbCrLf ' 输出MIME类型 </p>
<p></p>
<p> OutPut "〈FONT SIZE=""+2""〉" </p>
<p></p>
<p> If CGI_RequestMethod = "POST" Then </p>
<p></p>
<p> sBuff = String(lContentLength, Chr$(0)) </p>
<p></p>
<p> rc = ReadFile(hStdIn, ByVal sBuff, lContentLength, lBytesRead, ByVal 0&) </p>
<p></p>
<p> sFormData = Left$(sBuff, lBytesRead) </p>
<p></p>
<p> ElseIf CGI_RequestMethod = "GET" Then </p>
<p></p>
<p> sFormData = CGI_QueryString </p>
<p></p>
<p> Else </p>
<p></p>
<p> OutPut "Unknow Form Method !" </p>
<p></p>
<p> End If </p>
<p></p>
<p> chinesetail = String(400, " ") '为了在页面上正确显示中文生成一个空格串获取客户端用户的输入 </p>
<p></p>
<p> sName = GetCgiValue("name") </p>
<p></p>
<p> sEmail = GetCgiValue("email") </p>
<p></p>
<p> sURL = GetCgiValue("URL") </p>
<p></p>
<p> sfrom = GetCgiValue("from") </p>
<p></p>
<p> sComment = GetCgiValue("URL_Comment") </p>
<p></p>
<p> '对客户端用户的输入进行检查 </p>
<p></p>
<p> If Len(sName) = 0 Then </p>
<p></p>
<p> OutPut "〈P〉非常抱歉!您还没有填写姓名!" & chinesetail </p>
<p></p>
<p> Exit Sub </p>
<p></p>
<p> End If </p>
<p></p>
<p> If Len(sComment) = 0 Then </p>
<p></p>
<p> OutPut "〈P〉非常抱歉!您还没有提出建议!" & chinesetail </p>
<p></p>
<p> Exit Sub </p>
<p></p>
<p> End If </p>
<p></p>
<p> '获取唯一的临时文件名和留言簿文件并打开它们 </p>
<p></p>
<p> tempFileName = TempFile("c:\windows\temp", "gbk") </p>
<p></p>
<p> guestbook = "e:\netscape\server\docs\guests.html" </p>
<p></p>
<p> Open tempFileName For Output As #1 </p>
<p></p>
<p> Open guestbook For Input As #2 </p>
<p></p>
<p> Do '本循环体用于将留言簿中字符串"〈! ENDHEAD 〉"前面的内容写入临时文件 </p>
<p></p>
<p> Line Input #2, tempstring </p>
<p></p>
<p> Print #1, tempstring </p>
<p></p>
<p> Loop While tempstring 〈〉 "〈! ENDHEAD 〉" And Not EOF(2) </p>
<p></p>
<p> '向临时文件中插入客户端用户的留言 </p>
<p></p>
<p> Print #1, "〈hr〉" & vbCrLf </p>
<p></p>
<p> Print #1, "〈ul〉" & vbCrLf </p>
<p></p>
<p> Print #1, "〈li〉〈b〉留言时间〈/b〉</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -