聊天室建設詳解一

來源:互聯網
上載者:User
一位精通程式設計的大師,在每開發一個項目的時候,往往要經過非常嚴密的計劃,十分嚴格的求證,否則,辛辛苦苦開發的程式一旦中途發現問題,那往往都是前功盡棄,從頭開始。特別是開發一個大型項目,那計劃與求證過程比編寫程式過程更為重要。

  然而,如果我們是一位程式設計的初學者,要讓我們開發一個常式,我們的做法又往往與上面的做法相反。往往從最簡單的執行個體開始,實現最初步的功能,然後在簡單的基礎上不斷對程式加以改進、完善,使其功能不斷增加,發展,強大。

  我自己有一個習慣:在設計一些中小程式時,我喜歡花更大的精力去探究、去發現它的痛點部分,挖掘它的核心部分,然後從其核心開始進行實驗性編程。一般一個程式往往有幾個痛點與核心部分。一旦這些核心部分完成實驗,我們便可以胸有成竹的去對整個程式進行規劃,如此便可較迅速的完成設計。

  我們要建設一個聊天室,首先,這個聊天室的整體概況要在我們腦海中要有一個初步的影像,在眾多的公開的聊天室中,其核心無非是:
  1、聊天者把語句寫入文本或資料庫;
  2、瀏覽器不斷的對文本或資料庫進行重新整理、讀取;
  3、即時更新線上的客戶;
  4、管理員對聊天者進行踢或IP禁止操作。

  若是一個初學程式設計,你能夠實現寫資料庫、自動重新整理、擷取客戶IP的實驗,那麼,實際上建設聊天室也就完成了一大半。首先,要完成這幾個實驗,我們至少要熟悉一些ASP指令碼及一些SQL命令。

  1、<%IP=Request("REMOTE_ADDR")%>
   您的IP地址為:
   <%=IP%>

   這是一段擷取客戶IP的指令碼,如果你看過《ASP教程》,你應該知道REMOTE_ADDR是
   一個伺服器環境變數,返回傳出請求的遠程主機(client)的IP地址。

  2、<%
   Set Conn=Server.CreateObject("ADODB.Connection")
   Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access     Driver (*.mdb)};"

   Conn.Open connstr
   sql="SELECT * FROM 線上使用者表 WHERE 姓名='" & Request("name") & "'"
   Set Rs=conn.Execute(sql)

   If Rs.Bof OR Rs.Eof Then
    sz = "'" & Request("name") &_
    "', '"& Request("D4") &_
    "', '"& time1 & "'"
    into_db = "INSERT INTO 線上使用者表 ( 姓名, 性別, 登陸時間 ) VALUES(" &_
    sz & ")"
    conn.Execute(into_db)
   end if
   %>

   這是一段十分常見的對資料庫操作的指令碼,其中包含了對資料庫的條件查詢與記錄添加。上面此段程式我們分三部分來分析,如上以空格分隔的三個部分。
  要使用組件提供的對象,請建立對象的執行個體並將這個新的執行個體分配變數名。使用ASP的Server.CreateObject方法可以建立對象的執行個體,使用指令碼語言的變數分配指令可以為對象執行個體命名,如下例:
   Set Conn=Server.CreateObject("ADODB.Connection")
   這裡的變數Conn 是ASP 程式建立的訪問資料庫的對象執行個體 。
  我們要訪問資料庫,首先要必須知道這個資料庫在哪裡,這個資料庫的驅動程式是什麼,要指定這兩點有兩種方法:第一是在伺服器端手動建立資料庫源名、指定資料庫路徑、指定資料庫驅動程式,這個方法是通過伺服器端的控制面版中的 ODBC 來設定的。她的優點是可以限定資料庫的存取權限,增加資料庫的安全性,缺點是資料庫不易移植。
  再有一種方法是使用 ASP 來指定資料庫路徑及資料庫驅動程式。不必手動對建立資料庫源。在此例中,我們用的是第二種方法。server.mappath("chat.mdb")指定資料庫路徑,DRIVER={Microsoft Access Driver (*.mdb)};指定資料庫驅動程式,此例中我們使用的是MS ACCESS 資料庫。

  SELECT是 SQL 查詢命令。sql="SELECT * FROM 線上使用者表 WHERE 姓名='" & Request("name") & "'" 表示查詢 資料庫chat.mdb中的 線上使用者表 中所有姓名等於Request("name")的人,Request("name")是讀取表單中名為 NAME 的資料。

  Bof 是檔案開頭,Eof是檔案結尾。If Rs.Bof OR Rs.Eof Then...語句往往用於判斷資料庫中是否存在合格記錄,如果為真則記錄不存在,如果為假則記錄存在。
  INSERT INTO是SQL中的插入命令,往往用於插入一條記錄。

  上面此段程式,整體的意思就是:查詢資料庫線上使用者表中是否存在使用者Request("name"),如果不存在這個使用者則把這個使用者添加到線上使用者表中。

  3、<meta http-equiv="refresh" content="4">
   這是一條最簡單的頁面自動重新整理指令碼,她是HTML指令碼,而不是ASP指令碼。很簡單吧,其意思是每4秒鐘重新整理一次,但在使用過程中,你會發現會出現有不少問題出現。


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。