用PHP+MySQL搭建聊天室功能实例代码


Posted in PHP onAugust 20, 2012

下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开发中的应用

1、总体设计

1.1 构思与规划:

聊天室的基本原理,就是把每个连上同一网页的用户传送的发言数据储存起来,然后将所有的发言数据传给每一用户。也就是说,用数据库汇集每个人的发言,并将数据库中的数据传给每一个人就实现了聊天室的功能。

1.2 表设计

首先使用MySQL建立表chat用来储存用户的发言:

mysql> CREATE TABLE chat 
-> (chtime DATATIME, 
-> nick CHAR(10) NOT NULL, 
->words CHAR(150));

表中只设定了三个域,chtime是发言的时间,nick为发言者的昵称,words是发言的内容,发言最多150个字符

1.3 网页设计

一个最简单的聊天室通常需要两个页框:一个页框是用户输入发言的表单,另一个用来显示大家的发言。所以代码段通常至少需要如下几段:

建立页框的结构(main.php)

显示大家发言的程序段(cdisplay.php)

传送用户发言的程序段(speak.php)

用户登录进入聊天室程序段(login.php)

  2、代码设计

以上规划完成后,就可以着手代码设计了,采用php可以非常简明实现以上的功能。

2.1 用户登录login.php,本段代码是一个完全HTML网页

<html> 
<head> 
 <title>用户登录</title> 
</head> 
<body>请输入您的昵称<br> 
<form action=”main.php” method=”post” target=”_self”> 
 <input type=”text” name=”nick” cols=”20”> 
 <input type=”submit” value=”登录”> 
</body> 
</html>

用户提交自己的昵称后,就进入到聊天室,以下的处理交由main.php处理。

2.2 页框主体代码段main.php:

<? 
 setcookie(“nick”,$nick) //用cookie记录用户昵称,是常用的传递变量方法 
?> 
<html> 
<title>山西铝厂聊天室试用版ver1.0</title> 
<frameset rows=”80%,*”> 
<frame src=” cdisplay.php” name=”chatdisplay”> 
<frame src=”speak.php” name=”speak”> 
</frameset> 
</html>

2.3 显示发言cdisplay.php

本代码段的任务是将表chat中的数据取出,显示在页框中。每次刷新时,取数据库中最近的15条发言。同时,为防止数据库无限增大,需设计删除陈旧数据的功能。代码如下

<html> 
<head> 
 <title>显示用户发言</title> 
 <meta http-equiv=”refresh” content=”5;url=cdisplay.php”> 
</head> 
<body> 
<? 
 $link_ID=mysql_connect(“main”,”root”); 
 //链接Mysql服务器 服务器名为main,管理员名为root 
 mysql_select_db(“abc”); //选择数据库 
 $str=”select * from chat ORDER BY chtime;” ; //查询字符串 
 $result=mysql_query($str, $link_ID); //送出查询 
 $rows=mysql_num_rows($result); //取得查询结果的记录笔数 
 //取得最后15笔发言,并显示 
 @mysql_data_seek($resut,$rows-15); //移动记录指针到前15笔记录 
 if ($rows<15) $l=$rows; else $l=15; //记录总数小于15,则最多为该记录数 
 for ($i=1;$i<=$l;$i++) { 
list($chtime,$nick,$words)=mysql_fetch_row($result); 

echo $chtime; echo “ “;echo $nick; echo”:” ; echo $words; echo “<BR>”; 
 } 
 //清除库中过时的数据 
 @mysql_data_seek($result,$rows-20); //移动记录指针到前20笔记录 
 list($limtime)=mysql_fetch_row($result); 
 $str=”DELETE FROM chat WHERE chtime<'$limtime' ;” ; 
 $result=mysql_query($str,$link_ID); //送出查询字符串,库中只留前20个记录 
 mysql_close($link_ID); 
?> 
</body> 
</html>

2.4 送出发言到数据库speak.php

<html> 
<head> 
 <title>发言</title> 
</head> 
<body> 
<? 
 If ($words) 
{ $link_ID=mysql_connect(“main”,”root”); 

mysql_select_db(“abc”); //数据库名为abc 

$time=date(y).date(m).date(d).date(h).date(i).(date(s); //取得当前时间 

$str=”INSERT INTO chat(chtime,nick,words) values 


(‘$time','$nick','$words');” ; 

mysql_query($str,$link_ID); //送出发言到数据库 

mysql_close($link_ID); 
 } 
?> 
//输入发言的表单 
<form action=”speak.php” method=”post” target=” _self”> 
 <input type=”text” name=”words” cols=”20”> 
 <input type=”submit” value=”发言”> 
</form> 
</body> 
</html>

完成以上工作后,一个简单的聊天室制作就完成了。当然,设计者可以根据个人爱好做一些个性化设计,如增加一个页框,显示当前聊天室人员名单、增加发言表情、取得发言者IP、进一步美化页面等等。
PHP 相关文章推荐
php代码运行时间查看类代码分享
Aug 06 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
php增删改查示例自己写的demo
Sep 04 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
php批量删除超链接的实现方法
Oct 19 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
PHP系列学习之日期函数使用介绍
Aug 18 #PHP
PHP中extract()函数的定义和用法
Aug 17 #PHP
Linux下实现PHP多进程的方法分享
Aug 16 #PHP
PHP基础知识回顾
Aug 16 #PHP
php开发文档 会员收费1期
Aug 14 #PHP
php适配器模式介绍
Aug 14 #PHP
PHP缓存技术的多种方法小结
Aug 14 #PHP
You might like
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
趣味体育活动方案
2014/02/08 职场文书
企业形象策划方案
2014/05/29 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
公务员政审材料
2014/12/23 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python