您好,登錄后才能下訂單哦!
這篇文章主要介紹了PHP如何實現簡單聊天室,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一,聊天室模塊實現
1,聊天室主頁面窗口設置
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <!--載入配置文件--> <?php include_once 'config.php';?> <!--頁面標題--> <title><?php echo CHAT_NAME; ?></title> <script language="javascript" src="main.js"></script> <frameset rows="80,*,100" cols="*" frameborder="yes" border="1" framespacing="0"> <!--頂部窗口--> <frame src="top.php" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" /> <frameset rows="*" cols="168,*" framespacing="0" frameborder="yes" border="1"> <!--左側窗口--> <frame src="list.php" name="leftFrame" scrolling="No" id="leftFrame" title="leftFrame" /> <frameset rows="70%,*" cols="*" framespacing="0" frameborder="yes" border="1"> <!--公共聊天窗口--> <frame src="center.php" scrolling="auto" name="mainFrame" noresize="noresize" id="mainFrame" title="mainFrame" /> <!--私聊窗口--> <frame src="private.php" scrolling="auto" name="priFrame" id="priFrame" title="priFrame" /> </frameset> </frameset> <!--發言窗口--> <frame src="talk.php" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomsFrame" title="bottomFrame" /> </frameset> <noframes> <body></body> </noframes>
2,文件操作函數
本聊天室模塊使用文本來保存用戶列表和發言信息,主要考慮對文件的操作在速度上要優于對數據庫的操作。
(1)fopen()函數,打開文件或者URL,如果打開失敗,函數返回FALSE
語法:fopen(filename,mode,include_path,context)
參數說明:
filename:必須,規定要打開的文件或URL
mode:必須,規定要求到該文件/流的訪問類型。
include_path:可選,如果也需要在include_path中檢索文件的話,可以將該參數設為1或TRUE。
context:可選。規定文件句柄的環境,context是可以修改流的行文的一套選項
mode參數的取值:
"r":只讀方式打開,將文件指針指向文件頭。
"r+":讀寫方式打開,將文件指針指向文件頭。
"w":寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建。
"w+":讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建。
"a":寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建。
"a+":讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建。"x":創建并以寫入方式打開,文件指針指向文件頭。如果文件已存在,則fopen()調用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則嘗試創建。"x+":創建并以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則fopen()調用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則嘗試創建。
(2)fclose()函數,關閉打開的文件
語法:fclose(file)
參數:file:必須,規定要關閉的文件。file參數是一個文件指針,fclose()函數關閉指針指向的文件。文件指針必須有效,并且是通過fopen()或fsockopen()成功打開的文件。如果成功則返回true,否則返回false。
(3)讀取文件函數
********
fgets(file,length)函數用于一次讀取一行數據
file:必須,規定要讀取的文件
length:可選,規定要讀取的字節數,默認是1024字節。從file指向的文件中讀取一行并返回長度最多為length-1字節的字符串。碰到換行符(包括在返回值中)、EOF或者已經讀取了length-1字節后停止。如果沒有指定length,默認為1K,或者說1024字節。若失敗,則返回false。
********
file(path,include_path,context),將文件作為一個數組返回,數組中的每個單元都是文件中相應的一行,包括換行符在內。若失敗,則返回false。
path:必須,規定要讀取的文件。
include_path:可選。如果想在include_path中搜索文件,將該參數設為1.
context:可選。規定文件句柄的環境。context是一套可以修改流的行為的選項,若使用null,則忽略。
********
file_get_contents(path,include_path,context,start,max_length),是用于將文件的內容讀入到一個字符串中的首選方法。
path:必須,規定要讀取的文件
include_path:可選,如果也想在include_path中搜尋文件的話,可以將該參數設為"1".
context:可選,規定文件句柄的環境。context是一套可以修改流的行為的選項。若使用null,則忽略。
start:可選,規定在文件中開始讀取的位置。
max_length:可選,規定讀取的字節數。
(4)寫入文件函數
寫入數據也是PHP中常用的文件操作,在PHP中可以使用fwrite()和fputs()函數向文件中寫入數據。fputs()函數是fwrite()函數的別名。他們的用法相同。
語法:fwrite(file,string,length)
參數說明:
file:必須,規定要寫入的打開文件。
string:必須,規定要寫入的文件的字符串。
length:可選。規定要寫入的最大字節數。
fwrite()把string的內容寫入文件指針file處。如果指定了length,當寫入了length個字節或者寫完了string以后,寫入就會停止。發write()返回寫入的字節數,出現錯誤時則返回false。
(5)刪除文件
unlink(filename,context)函數用于刪除文件,該文件必須是關閉的,若成功則返回true,失敗則返回false。
filename:必須,規定要刪除的文件;
context:可選,規定文件句柄環境。context是可修改流的行為的一套選項。
3,定時刷新技術刪除不發言用戶
定時刷新,是指每隔一段時間,對象被重新加載一次,也可以只加載一次。使用javascript腳本能夠輕松實現該功能。
(1)setInterval()函數
JavaScript中的setInterval()函數可以每隔一段時間,就執行一次操作。該函數語法格式如下:
window.setInterval(Function,MilliSeconds)
參數Function表明要執行的操作,可以是一個函數。
參數MiliSeconds表示間隔的時間,單位是毫秒。
使用setInterval()函數后,只要不關閉頁面,該函數就會一直執行下去。如果想結束事件,可以使用clearInterval()函數。函數格式如下:
window.clearInterval(Interval)
參數Interval是setIntervald()函數的返回值。
(2)setTimeout()函數
setTimeout()函數和setInterval()函數用法相同,但setTimeout()函數只執行一次。用于在聊天室中定時刪除不發言的用戶。
4,滾屏顯示時滾動條定位技術
聊天室中的滾屏功能,最新發言信息是顯示在頁面的最底部,而每次刷新時,頁面焦點都被定位到最上面。滾動條的定位可分為整個頁面窗口的滾動條和頁面元素中的滾動條.
(1)窗口中的滾動條
窗口中的滾動條可以通過scroll()函數來實現定位。
語法:window.scroll(x,y)
參數x表示滾動條水平位置的坐標。參數y表示滾動條垂直位置的坐標。如果要將滾動條置底,那么只要將y的值設置大一些即可。
<script language="javascript"> //定位滾動條 function scrollWindow(){ this.scroll(0,75000); //設置滾動條坐標 setInterval('scrollWindow()',200); //每200毫秒執行一次函數 } scrollWindow(); </script>
(2)頁面元素中的滾動條
頁面元素中的滾動條可以用scrollTop屬性來實現定位。scrollTop屬性表示當前對象的頂點距離其最外層對象元素的距離。語法如下:
object.scrollTop=distance;
在聊天室公共窗口中的滾屏效果,就是使用的該屬性來定位滾動條。公共窗口使用一個div層來顯示聊天信息。首先將div層的縱向滾動條設為自動,橫向滾動條設為無并自動換行。
<div id="publist" >...</div>
在Javascript中設置縱向滾動條的scrollTop屬性等于它滾動高度(定位到聊天窗口的最下面)
<script language="javascript"> //定位滾動條 function scrollWindow(){ document.getElementById('publist').scrollTop = document.getElementById('publist').scrollHeight; setTimeout('scrollWindow()',200); } </script>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“PHP如何實現簡單聊天室”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。