php+mysql+jquery建立簡單網頁聊天室
1.需求分析
實現使用者登入線上聊天,聊天分為群聊和私聊,可以匿名聊天,傳送表情、背景顏色、字型大小和敏感詞遮蔽。顯示線上名單和不線上的名單。
2.系統框架
Php和Mysql和jquery實現的聊天系統
3.模組設計
大致分為三個模組:聊天顯示區、線上列表區、傳送語言和表情區。對應的檔案分的更加細化:login.php實現登入功能,nicklLogin.php實現匿名聊天和顯示線上列表,show.php實現群聊天介面顯示,speak.php實現語言傳送和表情、字型大小、聊天背景更換的功能,Stalk.php實現私聊的語言傳送等功能,Stalkshow.php實現私聊介面的顯示,index.php用freamSet包含三個模組。
資料庫:chat
資料庫表:chat:儲存多人聊天資訊
Chatuser:使用者儲存
Face:表情儲存(表情過多,表中沒儲存完)
Schat:私聊資訊儲存
4.編碼實現
Config.php資料庫配置檔案
<?php
if (!isset($_SESSION)) {
ob_start();
session_start();
}
//error_reporting(0); //容錯語句
$link_ID=mysql_connect("localhost","root","");//連結Mysql伺服器
mysql_select_db("chat"); //選擇資料庫
mysql_query("set names'utf8'");//選擇編碼格式
//mysql_query("SETcharacter_set_connection=uft-8 , character_set_results=utf-8,character_set_client=binary, sql_mode='' ");
date_default_timezone_set("Asia/Hong_Kong");//設定發言時間格式
?>
登入介面和註冊介面:
點選登入和註冊實現功能切換。
主介面:
Marqueen滾動顯示線上人數,單擊雪花顯示錶情區域,可進行匿名登入聊天,右側顯示線上和不線上下拉表單。實現敏感詞遮蔽功能。
私聊主介面
點選下拉列表的使用者進行私聊,私聊介面沒有敏感詞遮蔽,暢所欲言。點選紅叉退出私聊介面,私聊介面沒有匿名,我們不玩虛的,就是這麼實在。
總結
因為主框架使用freamSet,在提交資訊時想用jquery進行提交,但是不知道怎麼讓一個頁面在一個fream中顯示,這樣可以在提交資料後就可以清空文字域的訊息,後來就用了var text=$(window.parent.parent.frames["bottomFrame"].document).find('.input').html('');
來跨fream查詢文字域來實現清空的功能。
聊天介面滾動條跟隨問題解決:用jquery獲取最後一條資訊所在的位置,然後使用動畫的功能讓body的top等於最後一條的top,實現滾動條跟隨,因為該聊天介面採用分開式聊天,自己的話顯示在右邊,別人的在左邊,且聊天記錄不能超過15條,需要判斷最後一個是誰說的,來實現不論是誰最後說的滾動條都能跟隨。
私聊介面如何在fream中顯示:雖然知道使用jquery獲取src然後替換掉原來的src就可以了,但是用上面的跨fream查詢然後獲取src怎麼也獲取不到,後來在網上找到$('#main',window.parent.document).attr('src','Stalkshow.php');就這麼簡單就是實現了。
關於傳送表情問題:一開始我使用的是文字框,但是發現用jquery在文字框裡輸出一個影象標籤,顯示的還是html標籤,後來把表情當做背景,雖然可以顯示但是並不是我想要的。在網上也查了一些資料都是一些可以把div可編輯的jquery程式碼,也看不懂,最後發現textarea既可以打字又可以顯示圖片,然後就是多表情傳送,form表單只能提交一個,那麼實現資料共享,想到的當然是cookie和session了,這就需要jquery.cookie.js和jquery.session.js,把表情src存到陣列然後在放到cookie中,最後用php存到資料庫,當然在獲取cookie後記得刪除該cookie,不然表情會一直疊加。
做了這個聊天室,雖然很簡陋,但是也學到了不少,讓我php的功底有了一定的加深。(注:原始碼打包傳送在csdn下載處)