手机版

PHP聊天室简单实现方法详解

时间:2021-08-28 来源:互联网 编辑:宝哥软件园 浏览:

本文实例讲述了服务器端编程语言(专业超文本预处理器的缩写)聊天室简单实现方法。分享给大家供大家参考,具体如下:

用户=客服(先把信息入库,然后通过鄂毕河(Ob)长连接不断从数据库查询数据发送给客服)

客服=用户(先接收用户信息,然后把回复信息入库,最后通过创建交互式、快速动态网页应用的网页开发技术轮询不断请求数据,显示到用户聊天界面)

【注意:】如果所有页面搭建好,先链接客服聊天页面(server.php),接着再链接用户页面(client.php)

附图说明:

第一步:建表

说明:rec :接收信息方,发件人:发送信息方,内容:发送内容,是_new :作为标记,1是新信息2是已读信息(默认是1)

创建表"聊天日志"("日志id"int(11)不为空自动增量,“rec”varchar(10)不为空评论)接受方、"发送者“瓦尔查尔(10)非空注释发送方,`内容`文本非空注释'发送内容,` is _ new ` tinyint(4)NOT NULL DEFAULT ' 1 ' COMMENT '信息一新信息0 已读信息,PRIMARY KEY (`log_id`、` rec `) ENGINE=MyISAM AUTO _ INDEX=105 DEFAULT CHARSET=utf8 COMMENT='用户客服聊天轮询表'第二步:链接数据库:connect.php

$link=mysql_connect('localhost ',' root ',' ');MySQL _ query(' set name utf8 ');MySQL _ select _ db('聊天');第三步:用户聊天界面:client.php

!doctype html html lang=' en ' head meta charset=' UTF-8 '标题用户窗口/title style # user { width : 440 px;高: 300pxborder: 1px纯蓝;}/style脚本src=' http://代码。jquery。com/jquery-最新。js/script script $(function(){ $(' # BTN ')).单击(function(){ var content=$(“文本区域”)).val();如果(内容==''){alert('发送内容不能为空');返回;} //发送给客服!-把提交数据通过toServer.php存入数据库- $.post('toServer.php ',{'msg':content},function(RES){ var obj=JSON。解析(RES);$(“# user”).追加('你向客服发送:' obj ' br ');$(“文本区域”).val(" ");});});//用创建交互式、快速动态网页应用的网页开发技术轮询方式从数据库获取客服是否有发送消息给用户var轮询={ ' URL ' : '来自SERVER。PHP ',' dataType' : 'json ',success :函数(RES){//Ajax请求返回的数据var obj=res/追加到用户聊天的页面$(“# user”).追加(' b style='color:red '客服回复:' obj。内容“br”);$.ajax(轮询);} };$.ajax(轮询);//轮询发送创建交互式、快速动态网页应用的网页开发技术请求})/脚本/头体iframe src=' http : '宽度=' 0 '高度=' 0 '框架边框=' 0 '/iframe H3与客服聊天窗口/H3 div内容可编辑=' true ' id=' user '/div textarea name=' msg _ list ' id=' cols=' 60 ' row=' 15 '/textarea button id=' BTN ' type=' button ' send./button /div/body/html第四:用户发送信息入库创建交互式、快速动态网页应用的网页开发技术轮询查询有无客服回复信息

toServer.php

需要(' connect。PHP’);$ msg=html special chars($ _ POST[' msg '],ENT _ QUOTES);$ SQL=' INSERT INTO '聊天_日志`(rec,发件人,内容)VALUES('admin ',' user ',' $ msg ')';mysql_query($sql,$ link);echo JSON _ encode($ msg);fromServer.php

需要(' connect。PHP’);set _ time _ limit(0);//永不超时while(true){ $ SQL=' SELECT * FROM ` chat _ log ` WHERE rec=' user ' AND is _ new=1 ORDER BY log _ id desc LIMIT 1 ';$res=mysql_query($sql,$ link);if($ row=MySQL _ fetch _ assoc($ RES)){ $ SQL=' UPDATE ` chat _ log ` SET is _ new=0 WHERE log _ id=' .$ row[' log _ id '];mysql_query($sql,$ link);die(JSON _ encode($ row));}}

第五步:客服聊天页面server.php

!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 '标题客服窗口/title style # server { width : 440 px;高: 300pxborder: 1px纯蓝;}/style脚本src=' http://代码。jquery。com/jquery-最新。js '/脚本!-进行鄂毕河(Ob)缓存输出-脚本函数showMsg(RES){ var obj=eval(RES);$(“# server”).追加(' b style='color:red '用户向你发送:' obj。内容' br/');} //回复用户信息$(函数(){ $('#btn ')).单击(function(){ var content=$(“文本区域”)).val();//客服发送的信息通过toClient.php存入数据库$.post('toClient.php ',{'msg':content},function(RES){ var obj=JSON。解析(RES);$(“# server”).追加('你向用户发送:' obj ' br ');$(“文本区域”).val(" ");}) });})/script/head body iframe src=' http :/FromClient。PHP ' width=' 0 ' height=' 0 '框架边框=' 0 '/iframe H3与用户聊天窗口/H3 div内容可编辑=' true ' id=' server '/div textarea name=' msg _ list ' id=' cols=' 60 ' row=' 15 '/textarea button id=' BTN ' type=' button ' send./button /div/body/html第六步:客服查询数据库有无用户发送信息发送信息给用户

fromClient.php

需要(' connect。PHP’);ob _ start();//打开一个输出缓冲区,所有的输出信息不再直接发送到浏览器,而是保存在输出缓冲区里面echo str_repeat(',4096);ob _ end _ flush();//发送内部缓冲区到浏览器,删除缓冲区内容,关闭缓冲区ob _ flush();//发送内部缓冲区的内容到浏览器,删除缓冲区的内容,不关闭缓冲区set _ time _ limit(0);//永不超时while(true){ $sql='从聊天日志中选择*其中rec='admin '和is _ new=1 ORder BY _ log _ id desc限制1 ';$res=mysql_query($sql,$ link);if($ row=MySQL _ fetch _ assoc($ RES)){ $ SQL=' UPDATE ` chat _ log ` SET is _ new=0其中log_id=' .$ row[' log _ id '];mysql_query($sql,$ link);echo 'scriptparent.showMsg(' .json_encode($row ).)/script ';ob _ flush();flush();//将ob _齐平释放出来的内容,以及不在服务器端编程语言(专业超文本预处理器的缩写)缓冲区中的内容,全部输出至浏览器;刷新内部缓冲区的内容,并输出睡眠(1);}}toClient.php

需要(' connect。PHP’);$ msg=html special chars($ _ POST[' msg '],ENT _ QUOTES);if(!空($ msg)){ $ SQL='插入聊天日志(rec,发件人,内容)值(“用户”、“管理员”、“消息”);MySQL _ query($ SQL);echo JSON _ encode($ msg);}这里我在电脑上运行(server.php和client.php)聊天,一开始卡得不行,过一会好了之后就正常聊天了,只是不太清楚原因,有知道的朋友麻烦告诉一下我,感激不尽!(我理解的是因为长连接导致的)

更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP+MySQL留言板开发专题》 、 《PHP+ajax技巧与应用小结》 、 《php文件操作总结》 、 《PHP运算与运算符用法总结》 、 《PHP网络编程技巧总结》 、 《PHP基本语法入门教程》 、 《php面向对象程序设计入门教程》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》

希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。

版权声明:PHP聊天室简单实现方法详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。