📄 m35.htm
字号:
CGI_QueryString = Environ("QUERY_STRING")<br>
CGI_ContentLength = Environ("CONTENT_LENGTH")<br>
lContentLength = Val(CGI_ContentLength)<br>
sBuff = String(lContentLength, Chr$(0))<br>
OutPut "Content-type: text/html" & vbCrLf ' 输出MIME类型<br>
OutPut "<FONT SIZE=""+2"">"<br>
If CGI_RequestMethod = "POST" Then<br>
sBuff = String(lContentLength, Chr$(0))<br>
rc = ReadFile(hStdIn, ByVal sBuff, lContentLength, lBytesRead, ByVal
0&)<br>
sFormData = Left$(sBuff, lBytesRead)<br>
ElseIf CGI_RequestMethod = "GET" Then<br>
sFormData = CGI_QueryString<br>
Else<br>
OutPut "Unknow Form Method !"<br>
End If<br>
chinesetail = String(400, " ") '为了在页面上正确显示中文生成一个空格串获取客户端用户的输入<br>
sName = GetCgiValue("name")<br>
sEmail = GetCgiValue("email")<br>
sURL = GetCgiValue("URL")<br>
sfrom = GetCgiValue("from")<br>
sComment = GetCgiValue("URL_Comment")<br>
'对客户端用户的输入进行检查<br>
If Len(sName) = 0 Then<br>
OutPut "<P>非常抱歉!您还没有填写姓名!" & chinesetail<br>
Exit Sub<br>
End If<br>
If Len(sComment) = 0 Then<br>
OutPut "<P>非常抱歉!您还没有提出建议!" & chinesetail<br>
Exit Sub<br>
End If<br>
'获取唯一的临时文件名和留言簿文件并打开它们<br>
tempFileName = TempFile("c:\windows\temp", "gbk")<br>
guestbook = "e:\netscape\server\docs\guests.html"<br>
Open tempFileName For Output As #1<br>
Open guestbook For Input As #2<br>
Do '本循环体用于将留言簿中字符串"<! ENDHEAD >"前面的内容写入临时文件<br>
Line Input #2, tempstring<br>
Print #1, tempstring<br>
Loop While tempstring <> "<! ENDHEAD >" And Not EOF(2)<br>
'向临时文件中插入客户端用户的留言<br>
Print #1, "<hr>" & vbCrLf<br>
Print #1, "<ul>" & vbCrLf<br>
Print #1, "<li><b>留言时间</b>:" & Date$ & " "
& Time$ & vbCrLf<br>
Print #1, "<li><b>姓名: </b>" & sName & vbCrLf<br>
If Len(sEmail) <> 0 Then<br>
Print #1, "<li><b>E-mail: </b><a href=""mailto:"
& sEmail & """ >" & sEmail & "</a>" & vbCrLf<br>
End If<br>
If Len(sURL) <> 0 Then<br>
Print #1, "<li><b>我的主页: </b> <a href=""" &
sURL & """ >" & sURL & "</a>" & vbCrLf<br>
End If<br>
If Len(sfrom) <> 0 Then<br>
Print #1, "<li><b>我来自: </b>" & sfrom & vbCrLf<br>
End If<br>
Print #1, "<li><b>我的建议: </b>" & vbCrLf<br>
Print #1, sComment & vbCrLf<br>
Print #1, "</ul>" & vbCrLf<br>
Do '本循环体用于将留言簿剩余的东西写入留言簿<br>
Line Input #2, tempstring<br>
Print #1, tempstring<br>
Loop While Not EOF(2)<br>
Close #1<br>
Close #2<br>
Kill guestbook '删除旧的留言簿<br>
Name tempFileName As guestbook '将临时文件改成新的留言簿<br>
OutPut "<P>非常感谢您的留言!" & chinesetail<br>
OutPut "<P>欢迎您经常光顾本主页!" & chinesetail<br>
OutPut "</FONT>"<br>
End Sub<br>
Sub OutPut(s As String) ' 本子程序用于向标准输出写信息<br>
Dim lBytesWritten As Long<br>
s = s & vbCrLf<br>
WriteFile hStdOut, s, Len(s), lBytesWritten, ByVal 0&<br>
End Sub<br>
Public Function GetCgiValue(cgiName As String) As String<br>
' 本子程序可以获取表单上某一元素的数据<br>
Dim delim2 As Long ' position of "="<br>
Dim delim1 As Long ' position of "&"<br>
Dim n As Integer<br>
Dim pointer1 As Long,pointer2 As Long,length As Long,length1 As Long<br>
Dim tmpstring1 As String,tmpstring2 As String<br>
pointer1 = 1<br>
pointer2 = 1<br>
delim2 = InStr(pointer2, sFormData, "=")<br>
pointer2 = delim2 + 1<br>
Do<br>
length = delim2 - pointer1<br>
tmpstring1 = Mid(sFormData, pointer1, length)<br>
delim1 = InStr(pointer1, sFormData, "&")<br>
pointer1 = delim1 + 1<br>
length1 = delim1 - pointer2<br>
If delim1 = 0 Then length1 = lContentLength + 1 - pointer2<br>
If tmpstring1 = cgiName Then<br>
tmpstring2 = Mid$(sFormData, pointer2, length1)<br>
GetCgiValue = UrlDecode(tmpstring2)<br>
Exit Do<br>
End If<br>
If delim1 = 0 Then<br>
Exit Do<br>
End If<br>
delim2 = InStr(pointer2, sFormData, "=")<br>
pointer2 = delim2 + 1<br>
Loop<br>
End Function<br>
Public Function UrlDecode(ByVal sEncoded As String) As String<br>
' 本函数可以对用户输入的数据进行URL解码<br>
Dim pointer As Long ' sEncoded position pointer<br>
Dim pos As Long ' position of InStr target<br>
Dim temp As String<br>
If sEncoded = "" Then Exit Function<br>
pointer = 1<br>
Do '本循环体用于将“+”转换成空格<br>
pos = InStr(pointer, sEncoded, "+")<br>
If pos = 0 Then Exit Do<br>
Mid$(sEncoded, pos, 1) = " "<br>
pointer = pos + 1<br>
Loop<br>
pointer = 1<br>
Do '本循环体用于将%XX转换成字符。对于两个连续的%XX,如果第一个%XX<br>
'不是某些特指的WEB系统保留字符,将把它们转换成汉字<br>
pos = InStr(pointer, sEncoded, "%")<br>
If pos = 0 Then Exit Do<br>
temp = Chr$("&H" & (Mid$(sEncoded, pos + 1, 2)))<br>
If Mid(sEncoded, pos + 3, 1) = "%" And (temp <> ":") And (temp
<> "/") _<br>
And (temp <> "(") And (temp <> ")") And (temp <> ".")
And (temp <> ",") _<br>
And (temp <> ";") And (temp <> "%") Then<br>
Mid$(sEncoded, pos, 2) = Chr$("&H" & (Mid$(sEncoded, pos + 1,
2)) _<br>
& (Mid$(sEncoded, pos + 4, 2)))<br>
sEncoded = Left$(sEncoded, pos) & Mid$(sEncoded, pos + 6)<br>
pointer = pos + 1<br>
Else<br>
Mid$(sEncoded, pos, 1) = temp<br>
sEncoded = Left$(sEncoded, pos) & Mid$(sEncoded, pos + 3)<br>
pointer = pos + 1<br>
End If<br>
Loop<br>
UrlDecode = sEncoded<br>
Exit Function<br>
End Function<br>
Public Function TempFile(sPath As String, sPrefix As String) As String<br>
'本函数可以获得一个唯一的临时文件名<br>
Dim x As Long,rc As Long <br>
TempFile = String(127, Chr$(0))<br>
rc = GetTempFileName(sPath, sPrefix, ByVal 0&, TempFile)<br>
x = InStr(TempFile, Chr$(0))<br>
If x > 0 Then TempFile = Left$(TempFile, x - 1)<br>
End Function<br>
<br>
CGI程序guestbook.bas所要处理的表单如下所示:<br>
<br>
<html><head><title>贵宾留言簿</title></head><br>
<body><br>
<h3>贵宾留言簿测试</h3><br>
<form action="/cgi-bin/guest.exe" method="post">
<br>
您的姓名: <input type="text" name="name"><br><br>
您的Email信箱: <input type="text" name="email"><br><br>
您的主页的URL: <input type="text" name="URL"><br><br>
您的建议:<br> <textarea name="URL_Comment" rows=4 cols=30></textarea><br><br>
您来自: <input type="text" name="from"><br><br>
<input type="submit" value=" 留言 "><br>
</form><br>
</body></html><br>
* 联系地址 清华大学22#楼603房 张移山 邮编 100084<br>
电子邮件 zhangys@ntl.pim.tsinghua.edu.cn 电话 62782064 </font></span></span>
<br>
<br>
<br>
</b></font></p>
</td>
</tr>
</table>
</div>
<p align="center"><a href="../../pian/vb.htm">回首页</a>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -