亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP實(shí)現(xiàn)簡單聊天室(附源碼)第1/2頁

 更新時(shí)間:2013年06月25日 10:09:22   作者:  
本篇文章是對PHP實(shí)現(xiàn)聊天室的源代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

一,聊天室模塊實(shí)現(xiàn)
1,聊天室主頁面窗口設(shè)置

復(fù)制代碼 代碼如下:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!--載入配置文件-->
<?php include_once 'config.php';?>
<!--頁面標(biāo)題-->
<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">
<!--左側(cè)窗口-->
  <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>
<!--發(fā)言窗口-->
 <frame src="talk.php" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomsFrame" title="bottomFrame" />
</frameset>
<noframes>
<body></body>
</noframes>

2,文件操作函數(shù)
本聊天室模塊使用文本來保存用戶列表和發(fā)言信息,主要考慮對文件的操作在速度上要優(yōu)于對數(shù)據(jù)庫的操作。

(1)fopen()函數(shù),打開文件或者URL,如果打開失敗,函數(shù)返回FALSE
語法:fopen(filename,mode,include_path,context)
參數(shù)說明:
filename:
必須,規(guī)定要打開的文件或URL
mode:必須,規(guī)定要求到該文件/流的訪問類型。
include_path:可選,如果也需要在include_path中檢索文件的話,可以將該參數(shù)設(shè)為1或TRUE。
context:可選。規(guī)定文件句柄的環(huán)境,context是可以修改流的行文的一套選項(xiàng)
mode參數(shù)的取值:
"r":只讀方式打開,將文件指針指向文件頭。
"r+":讀寫方式打開,將文件指針指向文件頭。
"w":寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建。
"w+":讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建。
"a":寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建。
"a+":讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建。"x":創(chuàng)建并以寫入方式打開,文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建。"x+":創(chuàng)建并以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建。

(2)fclose()函數(shù),關(guān)閉打開的文件
語法:fclose(file)
參數(shù):file:必須,規(guī)定要關(guān)閉的文件。file參數(shù)是一個(gè)文件指針,fclose()函數(shù)關(guān)閉指針指向的文件。文件指針必須有效,并且是通過fopen()或fsockopen()成功打開的文件。如果成功則返回true,否則返回false。

(3)讀取文件函數(shù)
********
fgets(file,length)函數(shù)用于一次讀取一行數(shù)據(jù)
file:必須,規(guī)定要讀取的文件
length:可選,規(guī)定要讀取的字節(jié)數(shù),默認(rèn)是1024字節(jié)。從file指向的文件中讀取一行并返回長度最多為length-1字節(jié)的字符串。碰到換行符(包括在返回值中)、EOF或者已經(jīng)讀取了length-1字節(jié)后停止。如果沒有指定length,默認(rèn)為1K,或者說1024字節(jié)。若失敗,則返回false。
********
file(path,include_path,context),將文件作為一個(gè)數(shù)組返回,數(shù)組中的每個(gè)單元都是文件中相應(yīng)的一行,包括換行符在內(nèi)。若失敗,則返回false。
path:必須,規(guī)定要讀取的文件。
include_path:可選。如果想在include_path中搜索文件,將該參數(shù)設(shè)為1.
context:可選。規(guī)定文件句柄的環(huán)境。context是一套可以修改流的行為的選項(xiàng),若使用null,則忽略。
********
file_get_contents(path,include_path,context,start,max_length),是用于將文件的內(nèi)容讀入到一個(gè)字符串中的首選方法。
path:必須,規(guī)定要讀取的文件
include_path:可選,如果也想在include_path中搜尋文件的話,可以將該參數(shù)設(shè)為"1".
context:可選,規(guī)定文件句柄的環(huán)境。context是一套可以修改流的行為的選項(xiàng)。若使用null,則忽略。
start:可選,規(guī)定在文件中開始讀取的位置。
max_length:可選,規(guī)定讀取的字節(jié)數(shù)。

(4)寫入文件函數(shù)
寫入數(shù)據(jù)也是PHP中常用的文件操作,在PHP中可以使用fwrite()和fputs()函數(shù)向文件中寫入數(shù)據(jù)。fputs()函數(shù)是fwrite()函數(shù)的別名。他們的用法相同。
語法:fwrite(file,string,length)
參數(shù)說明:
file:必須,規(guī)定要寫入的打開文件。
string:必須,規(guī)定要寫入的文件的字符串。
length:可選。規(guī)定要寫入的最大字節(jié)數(shù)。
fwrite()把string的內(nèi)容寫入文件指針file處。如果指定了length,當(dāng)寫入了length個(gè)字節(jié)或者寫完了string以后,寫入就會(huì)停止。發(fā)write()返回寫入的字節(jié)數(shù),出現(xiàn)錯(cuò)誤時(shí)則返回false。

(5)刪除文件
unlink(filename,context)函數(shù)用于刪除文件,該文件必須是關(guān)閉的,若成功則返回true,失敗則返回false。
filename:必須,規(guī)定要?jiǎng)h除的文件;
context:可選,規(guī)定文件句柄環(huán)境。context是可修改流的行為的一套選項(xiàng)。

3,定時(shí)刷新技術(shù)刪除不發(fā)言用戶
定時(shí)刷新,是指每隔一段時(shí)間,對象被重新加載一次,也可以只加載一次。使用javascript腳本能夠輕松實(shí)現(xiàn)該功能。
(1)setInterval()函數(shù)
JavaScript中的setInterval()函數(shù)可以每隔一段時(shí)間,就執(zhí)行一次操作。該函數(shù)語法格式如下:
window.setInterval(Function,MilliSeconds)
參數(shù)Function表明要執(zhí)行的操作,可以是一個(gè)函數(shù)。
參數(shù)MiliSeconds表示間隔的時(shí)間,單位是毫秒。
使用setInterval()函數(shù)后,只要不關(guān)閉頁面,該函數(shù)就會(huì)一直執(zhí)行下去。如果想結(jié)束事件,可以使用clearInterval()函數(shù)。函數(shù)格式如下:
window.clearInterval(Interval)
參數(shù)Interval是setIntervald()函數(shù)的返回值。

(2)setTimeout()函數(shù)
setTimeout()函數(shù)和setInterval()函數(shù)用法相同,但setTimeout()函數(shù)只執(zhí)行一次。用于在聊天室中定時(shí)刪除不發(fā)言的用戶。

4,滾屏顯示時(shí)滾動(dòng)條定位技術(shù)
聊天室中的滾屏功能,最新發(fā)言信息是顯示在頁面的最底部,而每次刷新時(shí),頁面焦點(diǎn)都被定位到最上面。滾動(dòng)條的定位可分為整個(gè)頁面窗口的滾動(dòng)條和頁面元素中的滾動(dòng)條.

(1)窗口中的滾動(dòng)條
窗口中的滾動(dòng)條可以通過scroll()函數(shù)來實(shí)現(xiàn)定位。
語法:window.scroll(x,y)
參數(shù)x表示滾動(dòng)條水平位置的坐標(biāo)。參數(shù)y表示滾動(dòng)條垂直位置的坐標(biāo)。如果要將滾動(dòng)條置底,那么只要將y的值設(shè)置大一些即可。

復(fù)制代碼 代碼如下:

<script language="javascript"> //定位滾動(dòng)條
function scrollWindow(){
 this.scroll(0,75000); //設(shè)置滾動(dòng)條坐標(biāo)
 setInterval('scrollWindow()',200); //每200毫秒執(zhí)行一次函數(shù)
}
scrollWindow();
</script>

(2)頁面元素中的滾動(dòng)條
頁面元素中的滾動(dòng)條可以用scrollTop屬性來實(shí)現(xiàn)定位。scrollTop屬性表示當(dāng)前對象的頂點(diǎn)距離其最外層對象元素的距離。語法如下:
object.scrollTop=distance;
在聊天室公共窗口中的滾屏效果,就是使用的該屬性來定位滾動(dòng)條。公共窗口使用一個(gè)div層來顯示聊天信息。首先將div層的縱向滾動(dòng)條設(shè)為自動(dòng),橫向滾動(dòng)條設(shè)為無并自動(dòng)換行。
復(fù)制代碼 代碼如下:

<div id="publist" style="width:800px; height:220px; overflow-x:hidden; overflow-y:auto; work-break:break-all; word-wrap:break-word; line-height:20px;">...</div>

在Javascript中設(shè)置縱向滾動(dòng)條的scrollTop屬性等于它滾動(dòng)高度(定位到聊天窗口的最下面)
復(fù)制代碼 代碼如下:

<script language="javascript">
//定位滾動(dòng)條
function scrollWindow(){
 document.getElementById('publist').scrollTop = document.getElementById('publist').scrollHeight;
 setTimeout('scrollWindow()',200);
}
</script>

5,屏蔽刷新技術(shù)
屏蔽刷新,就是屏蔽<F5>鍵、屏蔽鼠標(biāo)右鍵和隱藏瀏覽器中的“刷新”按鈕3部分。每個(gè)部分使用的技術(shù)都不相同。

(1)隱藏“刷新”按鈕
open()函數(shù)的作用是打開一個(gè)新窗口,并可以對窗口樣式進(jìn)行設(shè)置。
Open()函數(shù)的語法格式如下:
op=window.open(

相關(guān)文章

  • php cookie 作用范圍–不要在當(dāng)前頁面使用你的cookie

    php cookie 作用范圍–不要在當(dāng)前頁面使用你的cookie

    這兩天在調(diào)試bug的時(shí)候遇到了一個(gè)問題,就是頁面莫名其妙的會(huì)跳轉(zhuǎn)到登陸頁面
    2009-03-03
  • php通過header發(fā)送自定義數(shù)據(jù)方法

    php通過header發(fā)送自定義數(shù)據(jù)方法

    下面小編就為大家分享一篇php通過header發(fā)送自定義數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • PHP+redis實(shí)現(xiàn)微博的拉模型案例詳解

    PHP+redis實(shí)現(xiàn)微博的拉模型案例詳解

    這篇文章主要介紹了PHP+redis實(shí)現(xiàn)微博的拉模型案例,結(jié)合具體實(shí)例形式詳細(xì)分析了php+redis獲取關(guān)注人最新信息的相關(guān)原理與操作技巧,需要的朋友可以參考下
    2019-07-07
  • PHP無刷新上傳文件實(shí)現(xiàn)代碼

    PHP無刷新上傳文件實(shí)現(xiàn)代碼

    PHP無刷新上傳文件實(shí)現(xiàn)代碼,使用php的朋友可以參考下。
    2011-09-09
  • PHP封裝PDO實(shí)現(xiàn)操作MySql數(shù)據(jù)庫

    PHP封裝PDO實(shí)現(xiàn)操作MySql數(shù)據(jù)庫

    數(shù)據(jù)庫操作類可以封裝數(shù)據(jù)庫連接和操作,使代碼更易于維護(hù)和擴(kuò)展,這篇文章主要為大家詳細(xì)介紹了PHP如何封裝操作類PDO從而實(shí)現(xiàn)操作MySql數(shù)據(jù)庫的功能,需要的可以了解下
    2023-10-10
  • smarty的保留變量問題

    smarty的保留變量問題

    {$smarty}保留變量可以被用于訪問一些特殊的模板變量,以下是全部頁面請求變量。
    2008-10-10
  • 詳解PHP Swoole與TCP三次握手

    詳解PHP Swoole與TCP三次握手

    TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接(連接導(dǎo)向)的、可靠的、 基于IP的傳輸層協(xié)議。TCP在IP報(bào)文的協(xié)議號(hào)是6。TCP是一個(gè)超級麻煩的協(xié)議,而它又是互聯(lián)網(wǎng)的基礎(chǔ),也是每個(gè)程序員必備的基本功。本文將詳細(xì)介紹PHP Swoole與TCP三次握手。
    2021-05-05
  • PHP zip壓縮包操作類完整實(shí)例

    PHP zip壓縮包操作類完整實(shí)例

    這篇文章主要介紹了PHP zip壓縮包操作類,結(jié)合完整實(shí)例形式分析了php封裝的針對zip文件解壓、壓縮、遞歸創(chuàng)建、讀取等相關(guān)操作,需要的朋友可以參考下
    2018-06-06
  • php下通過偽造http頭破解防盜鏈的代碼

    php下通過偽造http頭破解防盜鏈的代碼

    這篇文章主要用于圖片,軟件等突破防盜鏈的方法,希望需要的朋友有所幫助,但不推薦這樣做,如果官方改版都是無法繼續(xù)使用的。
    2010-07-07
  • php去掉數(shù)組的key重組數(shù)組的四種方法

    php去掉數(shù)組的key重組數(shù)組的四種方法

    在PHP開發(fā)中數(shù)組是常用的數(shù)據(jù)結(jié)構(gòu)之一,在處理數(shù)組時(shí)有時(shí)候需要去掉數(shù)組的key,只取數(shù)組中的值,這篇文章主要給大家介紹了關(guān)于php去掉數(shù)組的key重組數(shù)組的四種方法,需要的朋友可以參考下
    2023-12-12

最新評論