PHP菜鸟之简易聊天室
一、系统目标
聊天室使用数据库汇集每个人的发言,然后反过来将数据库中的发言显示在页面上,让每一位用户都能看到,这就是本例的目标。具体来说让每一位用户都能看到,这就是本例的目标。具体来说,简易聊天室功能包括如下:
用户登录:在用户发言时,将显示其登录名。
用户发言:用户输入要说的话。
显示发言信息:用户浏览所有发言信息。
设计思路:
1建立聊天室的数据库及相关数据表
2实现用户登录界面(login.php)
3实现发言页面(speak.php)
4实现发言显示页面(chat_display.php)
5实现主页面(main.php)
关键技术:
1、自动刷新页面
由于用户不停地发表言论,自然需要页面自动刷新,以显示最新的发言信息。这可以通过浏览器的Client Pull技术来实现。Client Pull利用HTML的meta标记,结合使用“http-equiv=Refresh”属性控制页面自动刷新,间隔时间content的属性决定。
具体来说如果想要使页面每隔一段时间就自动刷新,其实现方法是在HTML的<HEAD>与</HEAD>之间加上以下语句:
<meta http-equiv="Refresh" content="秒数;url=跳转的文件或地址“>
例如,想要每隔20秒页面刷新一次,需要把如下代码加入<head>区域中,其中20指每隔20秒刷新一次页面。
<meta http-equiv="Refresh" content="20" />
而如果要实现页面的自动跳转,如用户来到页面20秒后自动转向另一个页面new.php页面
<meta http-equiv="Refresh" content="20;url=new.php" />
2.传递用户名
在用户通过登入页面进入聊天室之后,系统应当一直保留其登入名信息,以便在其发言是使用,这可以通过使用session来实现。session是一种常用的信息存储机制,这里不做详细介绍,只简单说民在本例中的应用。
(1)在用户登录系统时,需要注册一个session变量来存储其登录名信息:
<?php
session_start();//装载session库。一定要放在首行
$user_name=$_POST["nick"];
session_register("user_name");//注册$user_name变量
?>
其中,在第二行打开Session功能,在第三行得到页面表单上用户输入的昵称信息:第四行注册Session变量 user_name.
(2)在用户发言的页面上,在其发言时,获取Session变量username,并将其值连同其发言内容存入数据库中:
<?php
...
$author=$_SESSEN["user_name"];
...//把$author信息存入数据库
3显示最新发言
简易聊天室另外一个需要解决的问题是在现实发言信息时,由于发言信息很多,不能将其全不显示出来,系统将一直利用Session来保存登录名信息,而只能显示最新的一定数量的发言信息。这可以通过发言信息按发言顺序递增,并选择最后的部分实现。
本例在页面上显示最新的15条发言信息:
@mysql_data_seek($result,$rows-15);//移动记录指针到前15条记录
if($rows<15)$1=rows;
else$l=15;
for($i=1;$i<=$1;$i++)
{list($cid,$author,$create_time,$text)=mysql_fretch_row($result);echo $crete_time;echo " ";echo "【".$author. "】" ;echo "说道:" //输出作者留言时间echo $text;echo "<BR>" //输出留言时间
}
其中,第一行的$result为查询所有留言得到的记录集,通过mysql_data_seek()命令来移动其记录游标到倒数第15条记录上;然后6~11行输出至多15条发言。
另外,数据库也没有必要保留全部用户发言信息,否则会使数据库迅速膨胀。可以使用一个策略:只保留最近的一定数量的发言,而把其他过期的发言及时删除。
PHP菜鸟之简易聊天室相关推荐
- HTML5 之WebSocket入门demo和简易聊天室
HTML5 WebSocket WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. 在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏 ...
- 连夜撸了一个简易聊天室
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 分不清轮询.长轮询?不知道什么时候该用websocket还 ...
- 撸一个简易聊天室,不信你学不会实时消息推送(附源码)
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 分不清轮询.长轮询? ...
- java聊天室程序_Java简易聊天室程序socket
Java简易聊天室程序socket chatroomdemo.java package com.socket.demo; import java.io.IOException; import java ...
- Socket编程实现简易聊天室
1.Socket基础知识 Socket(套接字)用于描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发出请求或者应答网络请求. Socket是支持TCP/IP协议的网络通信的基本 ...
- Express+Socket.IO 实现简易聊天室
代码地址如下: http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: ...
- 基于Node.js + WebSocket 的简易聊天室
代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...
- docker搭建swoole简易聊天室
docker搭建swoole的简易聊天室 首先pull镜像 docker pull docker.io/kong36088/nginx-php7-swoole 创建容器 docker run --na ...
- Java WebSocket编程与网页简易聊天室
在webSocket还未引入前,许多开发人员通过各种非正规手段来完成更新网站的最新信息和到所有当前访问者的任务,其中一种手段就是通过浏览器向服务器轮询更新,但这种手段的网络延迟比较明显,其用户体验比较 ...
最新文章
- 重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots
- mysql性能分析工具profiling_Mysql系列(十)—— 性能分析工具profiling
- 聊聊大厂面试官必问的 MySQL 锁机制
- 中国溶解浆市场深度调研及投资战略决策报告2022-2028年版
- 【企业管理】人力资源是CEO的第一工程
- MY_Log,无缝替换原生Log,支持日志输出到文件、FirePHP
- BugkuCTF-WEB题本地管理员
- 软件史上最伟大的十大程序员
- C#中只使用Invokerequired来判断是不是UI线程可靠吗?
- oracle什么时候使用静态监听,Oracle监听之动态监听与静态监听特点
- 高斯—若尔当(约当)消元法解异或方程组+bitset优化模板
- DNF私服单机搭建教程
- Kindle Touch 5.3.7上手使用指南
- windows终端终端_Windows终端机完整指南
- 修改人人商城支付后报错“服务器暂时无法处理您的请求,请稍后重试“
- PS小菜-1(快速旋转图片)
- NLP学习(二)—中文分词技术
- 线性回归的推导与java代码
- k折(k-fold)交叉验证
- 【ceph】Ceph 存储中 PGMap、OSDMap 和xxMap
热门文章
- 2023陕西省赛-Crypto
- Python代码,能玩30多款童年游戏!这些有几个是你玩过的
- Python小游戏集合 +【附上代码】
- python日历方法
- OMG Partical Practice
- OpenCv 源码初探之:cvCvtColor
- c语言程序运行环境实验报告,程序的运行环境实验报告.doc
- pgadmin转mysql_postgreSQL使用pgAdmin备份服务器数据的方法
- python3.7安装keras教程_Windows的Python3.5下keras安装
- 移动端web实现定位(获取GPS)