PHP实现简单聊天室(附源码)第1/2页

 更新时间:2013年06月25日 10:09:22   作者:  
本篇文章是对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" style="width:800px; height:220px; overflow-x:hidden; overflow-y:auto; work-break:break-all; word-wrap:break-word; line-height:20px;">...</div>

在Javascript中设置纵向滚动条的scrollTop属性等于它滚动高度(定位到聊天窗口的最下面)
复制代码 代码如下:

<script language="javascript">
//定位滚动条
function scrollWindow(){
 document.getElementById('publist').scrollTop = document.getElementById('publist').scrollHeight;
 setTimeout('scrollWindow()',200);
}
</script>

5,屏蔽刷新技术
屏蔽刷新,就是屏蔽<F5>键、屏蔽鼠标右键和隐藏浏览器中的“刷新”按钮3部分。每个部分使用的技术都不相同。

(1)隐藏“刷新”按钮
open()函数的作用是打开一个新窗口,并可以对窗口样式进行设置。
Open()函数的语法格式如下:
op=window.open(

相关文章

  • php cookie 作用范围–不要在当前页面使用你的cookie

    php cookie 作用范围–不要在当前页面使用你的cookie

    这两天在调试bug的时候遇到了一个问题,就是页面莫名其妙的会跳转到登陆页面
    2009-03-03
  • php通过header发送自定义数据方法

    php通过header发送自定义数据方法

    下面小编就为大家分享一篇php通过header发送自定义数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • PHP+redis实现微博的拉模型案例详解

    PHP+redis实现微博的拉模型案例详解

    这篇文章主要介绍了PHP+redis实现微博的拉模型案例,结合具体实例形式详细分析了php+redis获取关注人最新信息的相关原理与操作技巧,需要的朋友可以参考下
    2019-07-07
  • PHP无刷新上传文件实现代码

    PHP无刷新上传文件实现代码

    PHP无刷新上传文件实现代码,使用php的朋友可以参考下。
    2011-09-09
  • PHP封装PDO实现操作MySql数据库

    PHP封装PDO实现操作MySql数据库

    数据库操作类可以封装数据库连接和操作,使代码更易于维护和扩展,这篇文章主要为大家详细介绍了PHP如何封装操作类PDO从而实现操作MySql数据库的功能,需要的可以了解下
    2023-10-10
  • smarty的保留变量问题

    smarty的保留变量问题

    {$smarty}保留变量可以被用于访问一些特殊的模板变量,以下是全部页面请求变量。
    2008-10-10
  • 详解PHP Swoole与TCP三次握手

    详解PHP Swoole与TCP三次握手

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。本文将详细介绍PHP Swoole与TCP三次握手。
    2021-05-05
  • PHP zip压缩包操作类完整实例

    PHP zip压缩包操作类完整实例

    这篇文章主要介绍了PHP zip压缩包操作类,结合完整实例形式分析了php封装的针对zip文件解压、压缩、递归创建、读取等相关操作,需要的朋友可以参考下
    2018-06-06
  • php下通过伪造http头破解防盗链的代码

    php下通过伪造http头破解防盗链的代码

    这篇文章主要用于图片,软件等突破防盗链的方法,希望需要的朋友有所帮助,但不推荐这样做,如果官方改版都是无法继续使用的。
    2010-07-07
  • php去掉数组的key重组数组的四种方法

    php去掉数组的key重组数组的四种方法

    在PHP开发中数组是常用的数据结构之一,在处理数组时有时候需要去掉数组的key,只取数组中的值,这篇文章主要给大家介绍了关于php去掉数组的key重组数组的四种方法,需要的朋友可以参考下
    2023-12-12

最新评论