php_D3_“简易聊天室 ”实现的关键技术 详解
PHP+MySQL实现Internet上一个简易聊天室的关键技术
系统目标:
聊天室使用数据库汇集每个人的发言,并可将数据库内的发言信息显示在页面,让每个用户都可以看到,具体功能如下:
a.用户登录:用户发言时显示其登录名信息
b.用户发言:用户输入说的话
c.显示发言信息:用户浏览所有发言信息
设计思路:
(1).建立聊天室数据库及相关数据表
(2).实现用户登录页面(login.php)
(3).实现发言页面(speak.php)
(4).实现发言显示页面(chat_display.php)
(5).实现主页面(main.php)
关键技术:
1.自动刷新页面:
如果要想使页面每隔一定时间就自动刷新,其实现方法是在HTML的<HEAD>与</HEAD>标签之间加上如下语句:
<meta http-equiv="Refresh" content="秒数";url=跳转的文件或地址>
例如:用户来到页面20s后自动跳转至另一页面new.php,
<meta http-equiv="Refresh" content="20";url=new.php>
2.传递用户名:
在用户登录进入聊天室后,系统应该一直保留其登录信息,以便其发言时使用,可通过Session来实现。session是一种常用的信息存储机制,在此之间要说明本例中的应用。
(1).在用户登录系统时,需要注册一个session变量来存储其登录名信息:
1 <?php
2 session_start(); //装载session库,一定要放在首行
3 $user_name=$_POST["nick"];
4 session_register("user_name") ; //注册 $user_name 变量
5 ?>
其中,第2行打开session功能,第3行得到页面表单上用户输入的昵称信息,第4行注册session变量user_name.
(2).在用户发言的页面上,在其发言时,获取session变量user_name,并将其值连同其发言内容存入数据库:
1 <?php session_start();
2 ···
3 $author=$_SESSION["user_name"];
4 ··· //把author信息存入数据库
5 ?>
这样,在用户离开系统前,系统将一直利用session来保存登录名信息,可以随时在需要时使用。
3.显示最新发言:
简易聊天室另一个需要解决的问题是,在显示发言信息时,由于发言信息很多,不能将其全部显示出来,而只显示最新的一定数量的发言信息。这可以通过对发言信息按发言时间顺序排序递增,并选择最后的部分发言实现。
下面是在页面显示最新的15条发言信息:
1 @mysql_data_seek($resut,$rows-15); //移动记录指针到前15笔记录
2 if ($rows<15)
3 $l=$rows;
4 else
5 $l=15; //记录总数小于15,则最多为该记录数
6 for ($i=1;$i<=$l;$i++) //通过循环读取发言信息
7 {
8 list($cid,$author,$create_time,$text)=mysql_fetch_row($result);
9 echo $create_time;
10 echo " ";
11 echo "【".$author."】";
12 echo"说到:" ;
13 echo $text;
14 echo "<BR>"; //输出留言内容
15 }
其中,第1行$result 为查询所有留言得到的记录集,通过mysql_data_seek()命令来移动其记录游标到倒数第15条记录上;然后6~15行输出至多15条发言。
另外,数据库也没必要保留全部用户发言信息,否则会是数据库讯速膨胀。可以使用一个策略:只保留最近一定数量的发言,而把其他过期发言及时删除。
系统实现:
(1).创建数据库:
CREATE DATABASE 'my_chat';
(2).创建chat表:
-- 创建chat表:
CREATE TABLE `chat` (
`cid` INT NOT NULL AUTO_INCREMENT ,
`author` VARCHAR( 50 ) NOT NULL ,
`create_time` TIME NOT NULL ,
`text` BLOB NOT NULL ,
PRIMARY KEY ( `cid` )
);
php_D3_“简易聊天室 ”实现的关键技术 详解的更多相关文章
- php+websocket搭建简易聊天室实践
1.前言 公司游戏里面有个简单的聊天室,了解了之后才知道是node+websocket做的,想想php也来做个简单的聊天室.于是搜集各种资料看文档.找实例自己也写了个简单的聊天室. http连接分为短 ...
- node.js+websocket实现简易聊天室
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) websocket提供了一种全双工客户端服务器的异步通信方法,这种通信方法使用ws或者wss协议,可 ...
- Python开发【笔记】:aiohttp搭建简易聊天室
简易聊天室: 1.入口main.py import logging import jinja2 import aiohttp_jinja2 from aiohttp import web from a ...
- 学习JavaSE TCP/IP协议与搭建简易聊天室
一.TCP/IP协议 1.TCP/IP协议包括TCP.IP和UDP等 2.域名通过dns服务器转换为IP地址 3.局域网可以通过IP或者主机地址寻找到相应的主机 4.TCP是可靠的连接,效率低,且连接 ...
- 示例:Socket应用之简易聊天室
在实际应用中,Server总是在指定的端口上监听是否有Client请求,一旦监听到Client请求,Server就会启动一个线程来响应该请求,而Server本身在启动完线程之后马上又进入监听状态. 示 ...
- node+websocket创建简易聊天室
关于websocket的介绍太多,在这就不一一介绍了,本文主要实现通过websocket创建一个简易聊天室,就是90年代那种聊天室 服务端 1.安装ws模块,uuid模块,ws是websocket模块 ...
- 基于Node.js + WebSocket 的简易聊天室
代码地址如下:http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.js ...
- Express+Socket.IO 实现简易聊天室
代码地址如下:http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: 首 ...
- Socket实现简易聊天室,Client,Server
package seday08; import java.io.BufferedWriter;import java.io.OutputStream;import java.io.OutputStre ...
随机推荐
- ajax 文件下载
作为一个后端开发人员,使用java 生成文件,提供前端下载,这个问题倒不大,可是让我们自己去下载文件的时候,这个问题就大了,对不起,我只对前端一知半解,并不精通,谢谢!! 需求如下:前端检索数据,后台 ...
- 微信跳转ticket值怎么得到?浏览器跳到微信?哪里有微信跳转接口?跳转功能能用多久?
目前很多实用微信跳转技术的电商朋友,网站文章头部或者文章中部出现了点击关注微信关注的二维码,用户点击进去直接跳转到微信内打开指定的二维码,识别即可关注,方便省事,比以往的一键复制—粘贴微信号,转化效果 ...
- vue-cli利用router创建单页面
一.创建脚手架 第一步 打开命令输入vue init webpack-simple vue-name 下载webpack-simple (vue-name是你要创建的项目名称) 第二步 输入cd v ...
- centos7安装tomcat8.5
1.下载 tomcat Linux 版本 tomcat 官网下载地址:http://tomcat.apache.org/download-80.cgi 百度云盘链接:链接: https://pan.b ...
- vue 图片预览插件
https://github.com/daidaitu1314/vue2-preview //cnpm cnpm install vue2-preview -save //引入 import VueP ...
- 2019_BUAAOO_第一单元总结
前言 OO第一单元共有三次作业,分别为多项式求导.带有三角函数与幂函数的表达式求导.带有嵌套表达式因子的表达式求导.虽然这三次作业都离不开求导,可是每次作业的复杂度都是大大递增的.对于习惯于面向过程编 ...
- XML语言1.简介和语法
一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...
- FCC(ES6写法) Map the Debris
返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: avgAlt}. 思路: 直接使用公式 ...
- 【盛派周三分享-2019.2.20】开放分享内容,本期主题:《SCF、DDD及相关架构思想讨论》
“周三分享”是盛派网络约定的每周三晚上定时举办的内部分享活动,活动主要由技术人员分享各方面的技术主题,并由所有参与者围绕主题进行讨论.除技术话题外,也可能涉及到相关的设计.财税.金融.政策等方面的延伸 ...
- CAS实现单点登录SSO执行原理及部署
一.不落俗套的开始 1.背景介绍 单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS框架:CAS(Centra ...