亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 69.txt

?? 介紹VB里的各種控件的使用方法,窗口控制,圖像編程以及OCX等內(nèi)容,還提供了一個API集供參考.
?? TXT
字號:
用VB編寫留言板
黑龍江省牡丹江市兒童醫(yī)院內(nèi)科 張建華

 

隨著網(wǎng)絡(luò)的普及,越來越多的網(wǎng)站增設(shè)了各種實時交互功能,如網(wǎng)上調(diào)查、時事論壇、聊天室、留言板等。下面介紹一個使用VB編寫CGI腳本程序的實例,使你輕松擁有自己的留言板。

一、基本概念

1.什么是CGI

CGI是Common Gate Interface(通用網(wǎng)關(guān)接口)的縮寫,它運(yùn)行在Web服務(wù)器上,提供同客戶端瀏覽器界面的接口。通過CGI可以使Web服務(wù)器執(zhí)行一些外部程序,并將外部程序所產(chǎn)生的結(jié)果返回給Web瀏覽器。

CGI程序由兩部分組成,一部分是超文本頁面(html),就是客戶端在瀏覽器中看到的交互式的表單(如調(diào)查表和留言板的界面);另一部分是運(yùn)行在服務(wù)器上的程序(通過點擊頁面上的“提交”按鈕激活)。其基本的交互過程如下:   

1)  Web瀏覽器在接到客戶端對CGI程序的請求后,首先把要傳送的數(shù)據(jù)(客戶輸入)進(jìn)行編碼,然后提交給服務(wù)器;

2)  服務(wù)器調(diào)用CGI程序,對輸入數(shù)據(jù)進(jìn)行相關(guān)的解碼處理,并把處理后的結(jié)果寫入指定的輸出文件;

3)  服務(wù)器讀取輸出文件并把最終數(shù)據(jù)發(fā)送到客戶端,使用戶可以在瀏覽器中看到程序執(zhí)行的結(jié)果。

2.?dāng)?shù)據(jù)的提交方式

如果從客戶端向服務(wù)器傳送的數(shù)據(jù)量不是很多,即小于1024字節(jié),則可以使用“GET”傳輸方式,命令的使用方法為:在客戶端瀏覽器的交互式表單的源碼中加入如下一行代碼

<Form method ="GET" action ="/cgi-bin/guest.exe">

當(dāng)使用這種方法時,CGI程序從環(huán)境變量QUERY_STRING中獲取數(shù)據(jù)(即URL的問號“?”之后的那一部分?jǐn)?shù)據(jù))。

如果要通過CGI程序傳送的數(shù)據(jù)超過了1024字節(jié)(URL的最大長度限制),例如論壇中的“帖子”,則要使用“POST”的傳輸方法。

3.瀏覽器的編碼方式

Web瀏覽器對客戶端的輸入信息有統(tǒng)一的編碼格式:

1)  用“=”連接提交表單中各元素的Name和Value屬性,即以“名稱=值”的形式進(jìn)行編碼;

2)  用“&”連接表單中不同的輸入項目,例如:“Name=王哲&Email=wangzhes@netease.com”;

3)  若Value屬性中存放的數(shù)據(jù)含有空格,則空格被轉(zhuǎn)換成“+”,如“王  哲”被轉(zhuǎn)換為“王+哲”;

4)  對URL和Web系統(tǒng)的保留字符編碼成十六進(jìn)制數(shù)形式,即%HH。 

CGI程序在使用這些數(shù)據(jù)前必須對它們進(jìn)行解碼,即將數(shù)據(jù)還原成用戶在Web頁面上輸入時的形式。由于Web系統(tǒng)將漢字當(dāng)作特殊字符對待,一個漢字被瀏覽器編碼成四位十六進(jìn)制數(shù)(例如%D5%C5),因此在CGI程序中還要對漢字進(jìn)行一些特殊的解碼處理。

二、編制CGI程序

了解了上述CGI的一些基本特征后,我們就可以著手編制自己的留言板腳本程序了。

1.頁面設(shè)置

    首先要新建兩個超文本(html)文檔,可分別命名為guestbook.htm和databook.htm,其中的guestbook.htm為客戶在瀏覽器中看到的交互式表單頁面,其源代碼如下:

<html><head><title>留言板</title></head>

<body><center><h2>請留下您的建議</h2> 

<Form method ="GET" action ="/cgi-bin/guest.exe">

您的名字:<input type =text name =name size=33><br>

您的Email:<input type =text name =email size=32><br>

您的主頁地址: <input type =text name =URL size=28 value ="http:// " ><br>

您所在的城市: <input type =text name =city size=27><br><br>

留言內(nèi)容: <br><textarea name =content COLS=60 ROWS=4></textarea><p>

<input type =submit value="提交">  <input type =reset value="重寫">

</form></center> </body></html>

在databook.htm文檔中存儲的是各位來賓的留言,特殊之處是在文件中要使用一個定位字符串“<! ----- >”將文件的開始部分和具體的客戶留言部分分開。CGI程序?qū)⒃凇?lt;! ----- >”所在的位置之后插入客戶的留言。databook.htm的源文件為:

<html><head><title>看留言</title></head>

<body text="#00000" vlink="#990099" link="#333399">

<center><h1>查看留言</h1></font></center>

<!----->

<留言插入位置>

</body></html> 

這樣,最新的留言出現(xiàn)在頁面的最上端;如果要把最新的留言放在頁面的下端,則只需將其中的定位字符串“<! ----- >”移到客戶留言部分和HTML文件結(jié)尾部分之間的位置就行了。

需注意的是:<!----->字符串一定要單獨占一行。

2.CGI程序

用VB編寫的CGI程序的完整代碼附后。

三.程序調(diào)試

程序編寫完成后,要進(jìn)行調(diào)試排錯處理。CGI腳本不同于其他VB程序之處在于,CGI程序不能在個人計算機(jī)上進(jìn)行測試,而要放到服務(wù)器上的特定目錄下才能執(zhí)行(一般放在Cgi-Bin目錄下)。要實現(xiàn)這一點,對網(wǎng)絡(luò)管理員來說不成什么問題(因為其具有對服務(wù)器的讀寫操作權(quán)限),但對于大多數(shù)個人計算機(jī)愛好者來說卻是一個很大的難題。

因此,要對CGI腳本進(jìn)行測試,首先要在個人PC機(jī)上設(shè)置一個Web服務(wù)器的調(diào)試環(huán)境,即先在個人PC上運(yùn)行Web Server軟件來模擬服務(wù)器。

由于Windows操作平臺的局限性,可在Windows下運(yùn)行的Server軟件并不是很多,比較簡單且易于實現(xiàn)的一個方法是使用Windows98光盤中自帶的Server工具——Personal Web Server(個人網(wǎng)絡(luò)服務(wù)器)。

1.設(shè)置個人Web服務(wù)器

在Windws98光盤中的“\add-one\pws”目錄中,點擊“Setup.exe”進(jìn)行安裝。整個安裝過程比較簡單,按屏幕提示操作即可。

安裝完成后,在其主畫面左側(cè)點擊“高級”圖標(biāo),在虛擬目錄列表框內(nèi)選擇“home”目錄,點擊“添加”按鈕,選擇“瀏覽”,選中c:\Inetpub\wwwroot\cgi-bin(其中的盤符視執(zhí)行安裝時的路徑而定),在“新虛擬目錄”欄內(nèi)輸入“cgi-bin”,然后在訪問權(quán)限的設(shè)置中把“讀取”、“執(zhí)行”、“腳本”各項全選上,點擊“確定”按鈕。即成功地設(shè)置了個人Web服務(wù)器。

2.  測試操作

首先,把我們在前面所新建的兩個超文本文檔guestbook.htm和databook.htm拷貝到c:\Inetpub\webpub子目錄內(nèi),把編譯完的CGI程序guest.exe拷入c:\Inetpub\wwwroot\cgi-bin子目錄內(nèi);然后,打開瀏覽器,在地址欄內(nèi)輸入http://127.0.0.1/guestbook.htm,回車;就可以對CGI腳本程序進(jìn)行測試操作了。

如果在回車后出現(xiàn)請求“撥號連接”的畫面,則先點擊“取消”按鈕,然后在瀏覽器的“查看->Internet選項->連接”標(biāo)簽中(以IE為例),選擇“通過局域網(wǎng)連接到Internet”一項,再點擊“確定”即可。

經(jīng)測試確認(rèn)無誤后,便可以與自己放置主頁站點的網(wǎng)絡(luò)管理員聯(lián)系,把編制好的留言板腳本程序上傳到服務(wù)器上了。

需注意一點,如果網(wǎng)絡(luò)管理員把你的文檔放在與前述目錄不同的目錄中,則要在腳本中做出相應(yīng)的修改,并重新編譯生成EXE執(zhí)行文件。

附:guest .bas

' 聲明部分

Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) 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

Option Explicit

Public StrData(5)           As String  ' 用于存儲表單內(nèi)各項目的用戶輸入數(shù)據(jù)

Public CGI_QueryString     As String  ' 定義環(huán)境變量

Public Const STD_INPUT_HANDLE = -10&

Public Const STD_OUTPUT_HANDLE = -11&

Public hStdIn             As Long   ' 標(biāo)準(zhǔn)輸入文件句柄

Public hStdOut            As Long   ' 標(biāo)準(zhǔn)輸出文件句柄

Public Ent                As String

' 主函數(shù)

Sub Main()

   Dim UrlString As String, Databook As String

   Dim TempFileName As String, TempString As String

   Dim Number As Single, I As Integer

     Ent = vbCrLf

     hStdIn = GetStdHandle(STD_INPUT_HANDLE)

     hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)

     CGI_QueryString = Environ("QUERY_STRING")   ' 讀取返回字符

     TempString = TempString + CGI_QueryString + vbCrLf

     UrlString = UrlDecode(TempString)

     TempString = FenGe(UrlString)

      ' 獲得一個隨機(jī)數(shù)作為臨時文件名

    Randomize  

    Number = Int(10000 * Rnd + 100)  ' 隨機(jī)得到100到10000之間的整數(shù)

    TempFileName = "YourWebSitePath1 \" & Number  ' 注①

      ' 取得留言簿文件名

    Databook = "YourWebSitePath2 \databook.htm"     ' 注②

    Open TempFileName for Output As #1

    Open Databook For Input As #2

      ' 將留言簿中字符串"<!----->"前面的內(nèi)容寫入臨時文件

     Do

       Line Input #2, TempString

       Print #1, TempString

     Loop While TempString <> "<!----->"

    ' 檢查客戶端用戶的輸入項

    If StrData(1) < "     " Then

        Send "Content-type:text/html" & Ent

        Send "不要著急,您忘記填寫名字了! "

        Exit Sub

      End If

    If StrData(5) < "     " Then

        Send "Content-type:text/html" & Ent

        Send "對不起,您還沒有填寫留言的內(nèi)容。"

        Exit Sub

      End If

    ' 向臨時文件中寫入客戶端用戶的留言

    Print #1, "<ul>" & vbCrLf

    Print #1, "<li>時間:" & Date & " " & Time

    Print #1, "<li>姓名:" & StrData(1)

    ' 如果不填寫以下各項則不顯示該項的名稱

    If StrData(2) > "   " Then Print #1, "<li>E-mail:<small><a href=mailto:" _

          & StrData(2) & ">" & StrData(2) & "</a></small>"

    If StrData(3) > "http://   " Then Print #1, "<li>主頁:<a href=" & _

          StrData(3) & " TARGET=_blank >" & StrData(3) & "</a>"

    If StrData(4) > "   " Then Print #1, "<li>來自:" & StrData(4)

    ' 以下循環(huán)查找留言內(nèi)容中的回車符,將其替換為瀏覽器能夠

    ' 識別的換行符

   Do

       I = InStr(StrData(5), Chr(13))

         If I = 0 Then Exit Do  

       UrlString = Mid(StrData(5), 1, I - 1)

       StrData(5) = UrlString + "<br>" + Mid(StrData(5), I + 1)

   Loop

       Print #1, "<li>內(nèi)容:" & StrData(5) & vbCrLf; "</ul><hr>"

     ' 將留言簿中以前的留言內(nèi)容寫入臨時文件

    Do

      Line Input #2, TempString

      Print #1, TempString

    Loop While Not EOF(2)

     ' 關(guān)閉打開的文件并將臨時文件更名

    Close #1

    Close #2

    Kill Databook

    Name TempFileName As Databook

     ' 在客戶端顯示處理結(jié)果

    Send "Content-type:text/html" & Ent

    Send "<HTML><body><center><br>您的建議已成功提交<br>"

    Send "<br><a href=\webpub\databook.htm>"    ' 注③

    Send "點這里查看結(jié)果</a></center></body></html>"

 End Sub

  ' 該子程序用于處理向客戶端返回的數(shù)據(jù)

Sub Send(s As String)

Dim lBytesWritten As Long

  s = s & Ent

  WriteFile hStdOut, s, LenB(StrConv(s, vbFromUnicode)), lBytesWritten, ByVal 0&

End Sub

  ' 本函數(shù)用于對用戶輸入的數(shù)據(jù)進(jìn)行解碼

Public Function UrlDecode(ByVal sEncoded As String) As String

Dim pointer As Long, pos As Long 

Dim temp As String

    If sEncoded = "" Then Exit Function 

    pointer = 1

      Do      ' 該循環(huán)對系統(tǒng)保留字和漢字進(jìn)行處理

        pos = InStr(pointer, sEncoded, "%")

           If pos = 0 Then Exit Do

        temp = Chr("&H" & (Mid(sEncoded, pos + 1, 2)))

           If Mid(sEncoded, pos + 3, 1) = "%" And (temp <> ":") _

              And (temp <> "\") And (temp <> "/") Then

           Mid(sEncoded, pos, 2) = Chr("&H" & (Mid(sEncoded, pos + 1, 2)) _

              & (Mid(sEncoded, pos + 4, 2)))

              sEncoded = Left(sEncoded, pos) & Mid(sEncoded, pos + 6)

              pointer = pos + 1

               Else

           Mid(sEncoded, pos, 1) = temp

              sEncoded = Left(sEncoded, pos) & Mid(sEncoded, pos + 3)

              pointer = pos + 1

           End If

      Loop

    UrlDecode = sEncoded

End Function

' 本函數(shù)用于對輸入的“Name = Value”數(shù)據(jù)對進(jìn)行分解

Public Function FenGe(Cstring As String) As String

Dim I As Integer, j As Integer, add As Integer

j = 1

   Do While InStr(Cstring, "&") <> 0

        I = InStr(Cstring, "&")

        StrData(j) = Mid(Mid(Cstring, 1, I - 1), InStr(Mid(Cstring, 1, I - 1), "=") + 1)

          j = j + 1

        Cstring = Mid(Cstring, I + 1)

   Loop

      StrData(j) = Mid(Cstring, InStr(Cstring, "=") + 1)

 For I = 1 To j    ' 該循環(huán)用于把字符串內(nèi)的“+”還原為空格

    Do

      add = InStr(StrData(I), "+")

        If add = 0 Then Exit Do

      Mid(StrData(I), add, 1) = " "

    Loop

 Next I

End Function

注①:“TempFileName = "YourWebSitePath1\" & Number”中的YourWebSitePath1是由網(wǎng)絡(luò)管理員指定的Web服務(wù)器上的絕對路徑,用于存放臨時文件。若是在自己計算機(jī)上進(jìn)行測試,可以先設(shè)定為“c:\windows\temp\”。

注②:本句中的YourWebSitePath2亦是由網(wǎng)絡(luò)管理員分配的服務(wù)器路徑,用于存放超文本文檔。自己測試時,可以先設(shè)定為“c:\inetpub\webpub\”。

注③:在上傳時,“webpub”目錄要隨注②中YourWebSitePath2的改變而改變,不要遺忘,否則要出錯。

 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu亚洲| 欧美日韩中文字幕一区| 久久综合色8888| 免费成人你懂的| 日韩欧美自拍偷拍| 激情综合色丁香一区二区| 欧美精品一区二区三区蜜桃视频 | 亚洲图片欧美激情| 成人涩涩免费视频| 亚洲美女电影在线| 宅男在线国产精品| 国产最新精品免费| 综合久久综合久久| 91精品国产综合久久精品图片| 麻豆成人综合网| 中国色在线观看另类| 国产清纯白嫩初高生在线观看91 | 欧美日韩午夜影院| 爽好多水快深点欧美视频| 日韩欧美资源站| eeuss鲁一区二区三区| 亚洲一区二区三区国产| 精品欧美久久久| 99久久精品免费观看| 日日夜夜免费精品| 国产人成一区二区三区影院| 日本韩国精品一区二区在线观看| 日韩成人一区二区| 国产精品拍天天在线| 欧美高清性hdvideosex| 国产成人欧美日韩在线电影| 亚洲在线中文字幕| 国产婷婷精品av在线| 在线观看不卡视频| 国产成人精品免费看| 亚洲18色成人| 国产精品欧美一区喷水| 日韩欧美一区在线| 91香蕉视频污| 国产精品一区二区在线观看网站| 亚洲影视资源网| 中文字幕乱码久久午夜不卡 | 国产精品一级片在线观看| 亚洲伦理在线精品| 久久久99精品免费观看不卡| 欧美色图激情小说| 99久久99久久精品免费观看| 国内成人精品2018免费看| 亚洲国产精品一区二区久久恐怖片| 日韩午夜av一区| 欧美日韩欧美一区二区| 99久久久国产精品免费蜜臀| 精品无码三级在线观看视频 | 亚洲视频一二三| 国产视频一区二区在线| 日韩一区二区三区视频| 欧美人动与zoxxxx乱| 色婷婷综合在线| 成人激情开心网| 国产精品18久久久久久久久久久久| 日韩高清在线观看| 一区二区三区在线观看国产| 中文字幕一区二区三区四区| 久久免费看少妇高潮| 日韩欧美中文字幕公布| 91精品国产欧美一区二区成人| 欧美影视一区在线| 色播五月激情综合网| 91亚洲国产成人精品一区二三| 成人h动漫精品一区二区| 国产二区国产一区在线观看| 国产在线精品一区二区夜色| 热久久国产精品| 日韩av网站免费在线| 石原莉奈一区二区三区在线观看| 亚洲伊人色欲综合网| 伊人婷婷欧美激情| 一区二区三区日韩| 夜夜操天天操亚洲| 亚洲一区二区三区视频在线播放| 一区二区三区在线免费视频| 一区二区三区加勒比av| 亚洲一级二级三级| 午夜精品久久久久久久久| 日韩在线一区二区| 麻豆国产一区二区| 国产一区二区91| 成人黄页在线观看| 91福利在线播放| 欧美肥妇毛茸茸| 欧美成人一区二区三区片免费| 久久视频一区二区| 国产精品美女久久久久aⅴ | 在线综合亚洲欧美在线视频| 3d成人h动漫网站入口| 91精品国产色综合久久不卡电影| 日韩视频一区二区三区在线播放| 久久久亚洲精品一区二区三区| 国产亚洲综合在线| 亚洲乱码精品一二三四区日韩在线 | 一区二区久久久久久| 亚洲成精国产精品女| 麻豆精品久久精品色综合| 国产福利精品一区| 欧美性一区二区| 欧美成人性战久久| 最近日韩中文字幕| 日本欧美韩国一区三区| 丁香另类激情小说| 欧美日韩国产一级| 久久欧美一区二区| 亚洲综合在线免费观看| 国产一区二区三区四区五区美女| a4yy欧美一区二区三区| 欧美一区二区三区免费大片| 国产色一区二区| 亚洲成人在线网站| 成人美女在线视频| 91精品在线一区二区| 亚洲国产高清aⅴ视频| 亚洲电影一级片| 国产99一区视频免费| 欧美精品在欧美一区二区少妇| 国产无遮挡一区二区三区毛片日本| 亚洲免费av高清| 国产一区在线观看视频| 欧美在线高清视频| 久久九九久久九九| 日韩综合在线视频| 一本大道综合伊人精品热热| 精品国产一区二区三区av性色| 樱桃视频在线观看一区| 国产凹凸在线观看一区二区| 欧美另类变人与禽xxxxx| 成人欧美一区二区三区白人| 黑人精品欧美一区二区蜜桃| 欧美麻豆精品久久久久久| 亚洲丝袜自拍清纯另类| 国产一区二区伦理| 日韩欧美中文字幕一区| 亚洲一卡二卡三卡四卡五卡| 国产mv日韩mv欧美| 久久久av毛片精品| 久久疯狂做爰流白浆xx| 欧美人妖巨大在线| 亚洲国产一二三| 91激情五月电影| 中文字幕在线一区| 国产伦精品一区二区三区免费| 91麻豆精品国产91久久久使用方法| 最近中文字幕一区二区三区| 懂色中文一区二区在线播放| 2023国产精品视频| 久久精品久久精品| 精品久久国产97色综合| 久久精品理论片| 日韩欧美你懂的| 奇米在线7777在线精品| 欧美精品精品一区| 午夜精品123| 欧美久久久一区| 日韩精品亚洲专区| 欧美一区二区视频在线观看2020| 亚洲6080在线| 日韩色在线观看| 蜜臀av亚洲一区中文字幕| 日韩欧美中文字幕精品| 久久国产精品色| 久久久久久久综合色一本| 激情五月播播久久久精品| 欧美大白屁股肥臀xxxxxx| 久久精品国产成人一区二区三区| 日韩色视频在线观看| 国产精品自在在线| 国产欧美一区二区精品性色 | 婷婷激情综合网| 这里只有精品视频在线观看| 日本中文字幕一区二区视频| 欧美一区二区三区免费| 久久疯狂做爰流白浆xx| 欧美激情在线一区二区三区| 成人午夜免费视频| 亚洲激情成人在线| 欧美日韩久久不卡| 激情欧美一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 成人免费视频app| 一区二区国产视频| 91精品久久久久久久久99蜜臂| 久久国产尿小便嘘嘘| 国产精品全国免费观看高清| 色哟哟国产精品免费观看| 亚洲成av人片在线| 亚洲精品在线观看视频| 成人av电影免费在线播放| 亚洲欧美日本韩国| 欧美一二三区在线观看| 粉嫩一区二区三区性色av| 亚洲综合一区二区精品导航| 欧美一区二区三区的|