PHP+MySQL實現Internet上一個簡易聊天室的關鍵技術
系統目標:
聊天室使用資料庫彙集每個人的發言,並可將資料庫內的發言資訊顯示在頁面,讓每個使用者都可以看到,具體功能如下:
a.使用者登入:使用者發言時顯示其登入名稱資訊
b.使用者發言:使用者輸入說的話
c.顯示發言資訊:使用者瀏覽所有發言資訊
設計思路:
(1).建立聊天室資料庫及相關資料表
(2).實現使用者登入頁面(login.php)
(3).實現發言頁面(speak.php)
(4).實現發言顯示頁面(chat_display.php)
(5).實現首頁面(main.php)
關鍵技術:
1.自動重新整理頁面:
如果要想使頁面每隔一定時間就自動重新整理,其實現方法是在HTML的與標籤之間加上如下語句:
例如:使用者來到頁面20s後自動跳轉至另一頁面new.php,
2.傳遞使用者名稱:
在使用者登入進入聊天室後,系統應該一直保留其登入資訊,以便其發言時使用,可通過Session來實現。session是一種常用的資訊儲存機制,在此之間要說明本例中的應用。
(1).在使用者登入系統時,需要註冊一個session變數來儲存其登入名稱資訊:
1
其中,第2行開啟session功能,第3行得到頁面表單上使用者輸入的暱稱資訊,第4行註冊session變數user_name.
(2).在使用者發言的頁面上,在其發言時,擷取session變數user_name,並將其值連同其發言內容存入資料庫:
1
這樣,在使用者離開系統前,系統將一直利用session來儲存登入名稱資訊,可以隨時在需要時使用。
3.顯示最新發言:
簡易聊天室另一個需要解決的問題是,在顯示發言資訊時,由於發言資訊很多,不能將其全部顯示出來,而只顯示最新的一定數量的發言資訊。這可以通過對發言資訊按發言時間順序排序遞增,並選擇最後的部分發言實現。
下面是在頁面顯示最新的15條發言資訊:
1 @mysql_data_seek($resut,$rows-15); //移動記錄指標到前15筆記錄 2 if ($rows<15) 3 $l=$rows; 4 else 5 $l=15; //記錄總數小於15,則最多為該記錄數 6 for ($i=1;$i<=$l;$i++) //通過迴圈讀取發言資訊 7 { 8 list($cid,$author,$create_time,$text)=mysql_fetch_row($result); 9 echo $create_time;10 echo " ";11 echo "【".$author."】";12 echo"說到:" ;13 echo $text;14 echo "
"; //輸出留言內容15 }
其中,第1行$result 為查詢所有留言得到的記錄集,通過mysql_data_seek()命令來移動其記錄遊標到倒數第15條記錄上;然後6~15行輸出至多15條發言。
另外,資料庫也沒必要保留全部使用者發言資訊,否則會是資料庫訊速膨脹。可以使用一個策略:只保留最近一定數量的發言,而把其他到期發言及時刪除。
系統實現:
(1).建立資料庫:
CREATE DATABASE 'my_chat';
(2).建立chat表:
1 -- 建立chat表:2 CREATE TABLE `chat` (3 `cid` INT NOT NULL AUTO_INCREMENT ,4 `author` VARCHAR( 50 ) NOT NULL ,5 `create_time` TIME NOT NULL ,6 `text` BLOB NOT NULL ,7 PRIMARY KEY ( `cid` ) 8 );