信息表设计:


1.建表

create table messages(id int UNSIGNED PRIMARY KEY auto_increment,
sender VARCHAR(64) not null,
getter varchar(64) not null,
content VARCHAR(3600),
sendTime datetime not null,
isGet TINYINT DEFAULT 0
)

2.界面

chatRoom.php<?php
//接收 window.open 传递的用户名
$username = $_GET['username'];
//使用 php 方法去掉空格
$username = trim($username);//在这里我们取出 session 保存的登陆人的名字
session_start();
$loginuser = $_SESSION['loginuser'];
?>
<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><script type="text/javascript" src="my.js"></script><script type="text/javascript">function sendMessage(){//创建一个xmlhttprequest对象var myHttpRequest = getXmlHttpObject();if(myHttpRequest){var url = 'SendMessageController.php';// js 中如何使用 php 代码//如何在这里得到发送人的名字var data = 'con=' + $('con').value + "&getter=<?php echo $username;?>&sender=<?php echo $loginuser;?>";alert(data);myHttpRequest.open('post',url,true);myHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');myHttpRequest.onreadystatechange = function(){if(myHttpRequest.readyState == 4 && myHttpRequest.status == 200){//这里要返回信息,这里可能不需要}}}//发送myHttpRequest.send(data);}</script>
</head><body><center><h1>聊天室(您正在和<font color="red"><?php echo $username;?></font>聊天)</h1><textarea cols="50" rows="20"></textarea><br/><input type="text" id="con"/><input type="button" value="发送信息" onclick="sendMessage();"/>
</center></body>
</html>

friendList.php<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><script type="text/javascript" src="my.js"></script><script type="text/javascript">//移到上面改变颜色function change1(val,obj){if(val == 'over'){obj.style.color = "red";//鼠标变小手obj.style.cursor = "hand";}else if(val == 'out'){obj.style.color = "black";}}//响应点击新的聊天窗口function openChatRoom(obj){//打开新窗口//这里有我 window.open 是 get 方式提交,所以到服务器就变乱码//所以需要编码
//            window.open('chatRoom.php?username='+encodeURI(obj.innerHTML),'_blank');window.open('chatRoom.php?username='+obj.innerHTML,'_blank');}</script><!--<script type="text/javascript">window.resizeTo(500,700);</script>-->
</head><body><h1>好友列表</h1>
<ul><li onclick="openChatRoom(this);" onmouseover="change1('over',this);" onmouseout="change1('out',this)">宋江</li><li onclick="openChatRoom(this);" onmouseover="change1('over',this);" onmouseout="change1('out',this)">张飞</li><li onclick="openChatRoom(this);" onmouseover="change1('over',this);" onmouseout="change1('out',this)">小倩</li>
</ul>
</body>
</html>

login.php<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head><body>
<center><h1>欢迎登陆聊天室</h1><form action="loginController.php" method="post">用户名:<input type="text" name="username"/><br/>密码:<input type="password" name="passwd"/><br/><input type="submit" value="登陆聊天室"/></form>
</center></body>
</html>

loginController.php<?php//接收用户的名字和密码$loginUser = $_POST['username'];
$pwd = $_POST['passwd'];//简单判断(因为没有用户表)
if($pwd == '123'){//合法,跳转到好友列表session_start();$_SESSION['loginuser'] = $loginUser;header('Location:friendList.php');
}else{//不合法header("Location:login.php");
}

MessageService.class.php<?phprequire_once 'SqlHelper.class.php';
class MessageService
{//将信息添加到数据库function addMessage($sender,$getter,$con){//组织一个 sql$sql = "insert into messages(sender,getter,con,sendTime)values('$sender','$getter','$con','now()');";//创建一个 SqlHelper 对象$sqlHelper = new SqlHelper();return $sqlHelper->execute_dml($sql);}
}

my.js//创建 ajax 引擎function getXmlHttpObject()
{var xmlHttpRequest;if(window.XMLHttpRequest){xmlHttpRequest = new XMLHttpRequest();}else{xmlHttpRequest = new ActiveXObject();}return xmlHttpRequest;
}function $(id)
{return document.getElementById(id);
}

SendMessageController.php<?php
require_once 'MessageService.class.php';//控制器
//接收信息
$sender = $_POST['sender'];
$getter = $_POST['getter'];
$con = $_POST['con'];//把信息输出到文件
//file_put_contents('./my.log',$sender . '---' . $getter . '---' . $con . '\r\n',FILE_APPEND);//创建这样一个对象
$messageService = new MessageService();
$res = $messageService->addMessage($sender,$getter,$con);
if($res == 1){//成功
}else{echo 'err';
}

5.WEB版QQ多人聊天,带离线留言功能相关推荐

  1. php qq对话,PHP WEB版QQ多人聊天

    制作WEB版QQ多人聊天过程中, 无法将数据插入数据库,查找了多遍,实在不知哪里有错误,请各位老师帮忙看一下,给指点,非常感谢! 下面是各文件: //my.js function getXmlHttp ...

  2. Socket编程(三)---仿QQ多人聊天实例

    从上篇文章我们实现了一个简单的socket实例.实例的功能为当一个客户端连接服务端的时候,服务端打印客户端的连接信息,并向客户端发送一组数据并在服务端接收数据和打印,数据内容为服务器当前时间. 这次的 ...

  3. 【Java课程设计】仿QQ多人聊天室(基于TCP协议与JavaSwing)附下载

    仿QQ多人聊天室 下载地址:链接:https://pan.baidu.com/s/1dLFjSxwTA4gL5lI0B4UGuQ  提取码:2qs0 有两个项目,分别是服务器chatterServer ...

  4. WebSocket实现简易版的多人聊天室

    一.websocket简介           WebSocket是一种在单个TCP连接上进行全双工通信的协议.WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推 ...

  5. Mac版 QQ如何将聊天图片放大

    问题描述: 本人使用Mac版的QQ时遇到接收到的聊天图片太小,无法通过点击放大接收到的图片 解决方法: 1.选中需要放大的图片 2.按空格键,在屏幕中央获得相应的图片 3.最后在屏幕中央可以对图片进行 ...

  6. Android app跳转QQ加人聊天或者加群

    加人 String urlQQ = "mqqwpa://im/chat?chat_type=wpa&uin=qqnumber&version=1"; startAc ...

  7. [转] QQ上最牛的离线留言消息(爆笑)

    你好.我去杀几个人,很快回来. 我去后山和黑山老妖研究吃唐僧的事,有事回来再说 便秘中.....勿搅... 你终于来啦,我找你N年了,去火星干什么了?我现在去冥王星,回头跟你说个事,别走开啊 您所呼叫 ...

  8. App跳转到与手机版QQ公众服务号聊天界面

    为了方便客服与顾客联系,最近公司产生这样一种需求,从公司App客户端跳转到与手机版QQ公众服务号聊天界面.与QQ有关的需求按理说都应该去QQ开发平台查找相关资料.然并卯,没有找到与这一需求相关的资料. ...

  9. 无需下载, HTML5版QQ斗地主正式上线

    2011年12月,腾讯针对iPad用户推出HTML5版手机QQ游戏大厅,并且HTML5版QQ欢乐斗地主也同步亮相,这让那些喜欢玩斗地主的"果粉"们惊喜万分,因为无需下载客户端即可享 ...

  10. 多功能版系统微群人脉平台开发

    多功能版系统微群人脉平台开发 后台功能// 平台名称 查看信息扣X积分 查看名片扣X积分 免费用户 发布须充值VP 每天免费发布信息N条 每天免费发布名片N条 参数设置VP用户 免费查看名片 免费查看 ...

最新文章

  1. iPhone地图 实战iPhone GPS定位系统
  2. Hibernate从入门到精通(十)多对多单向关联映射
  3. 程矢Axure夜话:Axure手机原型视频教程之中继器上下滑动加载更多
  4. java method_JAVA Method的解析
  5. 归并排序算法(C#实现)
  6. D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项
  7. 《十四堂人生创意课》读书笔记,思维导图
  8. 使用@property
  9. 【hdu 4658】Integer Partition (无序分拆数、五边形数定理)
  10. 关于开放源代码的定义
  11. 最不可思议的职场语录
  12. 给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。
  13. android 右边抽屉,android双抽屉:右抽屉切换
  14. spring的依赖注入是什么意思
  15. FDTD的PML设置
  16. java实现简易五子棋
  17. ubuntu服务器安装可视化桌面(Gnome)
  18. 2018领航杯awd简单复现
  19. Docker/Podman使用入门---从容器构建镜像 提交镜像到服务器UCloud dockerhub
  20. empty() 是 (boolean) var 的反义词 is_null() 是 is_set() 的反义词!

热门文章

  1. WinForm------GridControl合并单元格
  2. 一天一工程总结系列-7.2
  3. dot language 学习笔记
  4. 投影仪开关机码和波特率
  5. halcon学习笔记——(6)单摄像机标定
  6. R语言ETL工程系列:读写(read/write)
  7. R语言爱好者必备——R语言速查表(高清版可下载)
  8. mysql 查询的关键词的执行顺序
  9. 数字电路与系统-知识点2
  10. 使用JavaScript调用手机平台上的原生API 1