当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP教程实例:用PHP打造动态聊天室系统

PHP
PHP 执行系统外部命令 system() exec() passthru()
最新的php 文件上传模型,支持多文件上传
php 静态页面中显示动态内容
数据库查询记录php 多行多列显示
谈PHP生成静态页面分析 模板+缓存+写文件
PHP 各种排序算法实现代码
PHP nl2br函数 将换行字符转成 <br>
php 分页原理详解
Discuz 模板语句分析及知识技巧
php win下Socket方式发邮件类
怎样去阅读一份php源代码
建站常用13种PHP开源CMS比较
php xml留言板 xml存储数据的简单例子
PHP 开源AJAX框架14种
PHP 替换模板变量实现步骤
PHP has encountered an Access Violation at 7C94BD02解决方法
php 正则匹配函数体
php 文件夹删除、php清除缓存程序
php download.php实现代码 跳转到下载文件(response.redirect)
PHP类(Class)入门教程

PHP教程实例:用PHP打造动态聊天室系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 214 ::
收藏到网摘: n/a

这是一个简单的用PHP设计的聊天室程序,目的是通过这个程序让大家熟悉PHP如何处理表单数据的!

这个经过精心设计的web聊天室使用了从表单传递过来的变量,并且把它们处理为HTML ,然后将其写入文件。把表单和信息文件放在一个框架中,你可以看到它与一个叫BeSeen的聊天室很象。当然它的好处在于, 我们的聊天室比起它的BeSeen堂兄弟来说要聪明一些。

上面就是基本的用于输入的表单。你可能想把它弄得更美观一些,但是不管出于什么目的,这个就是你要处理的。它发送两个变量给chat.php3,分别叫做name和message。

不过,在处理那些变量之前,我们需要从消息文件中把当前的内容取出来,否则在一个时间里我们只能看到一条消息了。几乎没有一个方法可以管理对话。只有象我一样对自已的消息文件的结构很熟悉,我就知道每一条消息都以一个回车符结束。这就是说,可以使用file()函数来将消息文件读到一个数组中去。

消息文件有12行。在12行中,第1行为头信息,第2行到11行为旧的消息,第12行包含了我的脚标。

我最感兴趣的是得到一个能够包含所有那些旧消息的字符串。

以下为引用的内容:

<?php
// 把文件读到一个数组中
message_array = file("messages.html");
// 编辑字符串
for (counter = 1; counter < 10; counter++) {
old_messages .= message_array[counter];
}
?>

在处理字符串的时候,我将for循环的counter初始化为1而不是0。这是因为我知道message_array 数组的第0个元素包含的是我的头信息,我不需要它。而且,通过设置循环结束条件为counter < 10,意思是只有数组中1到9的元素被读到字符串中。对于剩下的两个元素,第11个包含我的脚标,第10个包含的是最旧的消息。这两个我都想删除,因为在任何时刻我只让屏幕显示10条消息。修改counter < 10 表达式,可以允许你改变所包含消息的数量。

现在已经有了旧的消息,接着我想生成新的消息。我们已经有了两个变量:name 和message,所以写出一个新的消息就很容易了。

<?php new_message = "name : message<br> "; ?>

我们就快要写好消息文件了。剩下需要的就是头信息和脚标。先加入简单的头部信息:

以下为引用的内容:

<?php
// 除了在字符串末尾有回车符,其它地方不能有回车符,这一点很重要。
// 要把所有的头信息放在一样。
header = "<html><body bgcolor="#000000" text="#ffffff"> ";
?>

我们想让消息屏幕能够自动刷新,那么人们就可以看到新的贴子了。我没有使用JavaScript,而是采用了META标记进行刷新,主要是因为它可能更容易被客户端支持。我也不想让搜索引擎对我的消息文件进行索引。所以重新定义头信息为:

以下为引用的内容:

<?php
header = "<html><head><meta http-equiv="refresh" content="8">".
"<meta name="robots" content="noindex"></head>".
"<body bgcolor="#000000" text="#ffffff"> ";
?>

在文件的脚标处,我一般是放置一小段版权信息,还有与打开的头信息对应的结束标记。

以下为引用的内容:

<?php
footer = "<p align="center"><font color="#000000">".
"&copy; Mike Hall 2000</font></p></body></html>";
?>

将版权信息用<font color="#000000">包起来表示只有被选中它才会被看见,因为它的颜色与背景色#000000一样。这样做的目的只是为了不让它影响显示。

以下为引用的内容:

<?php
// 打开文件,并且将文件长度截为0
open_file = fopen("messages.html", "w");
// 写入文件的头信息
fputs(open_file, header);
// 新的一行
// (使用stripSlashes,因为我们不想让所有的转义字符出现在消息文件中)
fputs(open_file, stripslashes(new_message));
// 旧的行
fputs(open_file, old_messages);
// 脚标
fputs(open_file, footer);
// 关闭文件
fclose(open_file);
?>