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

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 213 ::
收藏到网摘: 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);
?>