php网页版聊天软件实现代码


Posted in PHP onAugust 12, 2016

本文实例为大家分享了php匿名聊天室的具体实现代码,供大家参考,具体内容如下

1. index.html   

<html>
 <head>
  <title>聊天室</title>
  <meta charset="utf-8"/>
  <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
  <link href="./css/style.css" rel="stylesheet"/>
  <script>
   var maxid = 0;
   function showmessage() {
    //创建ajax对象
    var xhr = new XMLHttpRequest();
    //监听
    xhr.onreadystatechange = function () {
     if (xhr.readyState === 4) {
      eval("var info=" + xhr.responseText);
      var text = "";
      for (var i = 0; i < info.length; i++)
      {
       text += "<div class='alert alert-success'>" +
         "<span class='name'>" + info[i].send + ":</span>" +
         "<span class='message'>" + info[i].content + "</span>" +
         "<span>(" + info[i].time + ")</span>" +
         "</div>";
       maxid = info[i].id;
      }
 
      var old = document.getElementById("msg").innerHTML;
      document.getElementById("msg").innerHTML = old + text;
      document.getElementById("msg").scrollTop = document.getElementById("msg").scrollHeight;
     }
    };
    //初始化
    xhr.open("get", "./action.php?maxid=" + maxid);
    //发送
    xhr.send();
   }
 
   $(document).ready(
     function ()
     {
      showmessage()
      self.setInterval("showmessage()", 2000);
     }
   );
   function send() {
    var postData ="content="+document.getElementById('content').value;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "./add.php", true);
    //一定要写头信息不然服务器接收不到
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function () {
     var XMLHttpReq = xhr;
     if (XMLHttpReq.readyState == 4) {
      if (XMLHttpReq.status == 200) {
       document.getElementById('content').value="";
      }
     }
    };
    xhr.send(postData);
   }
  </script>
 </head>
 <body>
 
  <div class="panel panel-default" id="main">
   <!--聊天室名字--> 
   <div class="panel-heading">
    <h3 class="panel-title">
     匿名者聊天室
    </h3>
   </div>
   <!--聊天室名字-->
   <!--聊天室消息框-->
   <div class="panel-body ">
    <div class="well no-bottom ">
     <!--     消息框样式-->
     <!--
     <div class="alert alert-success">成功!很好地完成了提交。</div>
     <div class="alert alert-info">信息!请注意这个信息。</div>
     <div class="alert alert-warning">警告!请不要提交。</div>
     <div class="alert alert-danger">错误!请进行一些更改。</div>
     -->
     <div id="msg" class="showmessage">
     </div>
     <!--聊天室消息框-->
     <div class="well" >
      <form role="form">
       <div class="form-group">
        <label for="name">发送消息</label>
        <textarea class="form-control" id="content" name="content"
           style="resize: none;font-family: Microsoft YaHei;" rows="3" >
        </textarea>
       </div>
       <div style="text-align: right">
        <button type="button" class="btn btn-primary" onclick="send()">
         <span class="glyphicon glyphicon-envelope"></span>
         发送
        </button>
       </div>
      </form>
     </div>
     <!--聊天室发送框-->
    </div>
   </div>
  </div>
 </body>
</html>

2. action.php

<?php
 
$link = mysqli_connect('localhost', 'root', '123', 'test');
mysqli_query($link, 'set names utf8');
$info= array();
header("Content-type: text/html; charset=utf-8");
$id=$_GET['maxid'];
$data = mysqli_query($link, "select * from talk where id>$id");
while ($array = mysqli_fetch_assoc($data)) {
 $info[] = $array;
};
 
 echo json_encode($info);

3. chat.sql

DROP TABLE IF EXISTS `talk`;
CREATE TABLE `talk` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
 `send` varchar(10) CHARACTER SET utf8 DEFAULT NULL COMMENT '发送者昵称',
 `ip` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
 `content` varchar(500) CHARACTER SET utf8 DEFAULT NULL,
 `time` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;

4. add.php

<?php
 
/**
 * @功能 将表单插入数据库
 */
$content=$_POST['content'];
print_r($_POST);
$time= date("Y-m-d H:i:s", time(0));
$link = mysqli_connect('localhost', 'root', '123', 'test');
mysqli_query($link, 'set names utf8');
$ip = $_SERVER["REMOTE_ADDR"];
$sql="INSERT INTO talk VALUES(NULL,'匿名者','$ip','$content','$time')";
$data = mysqli_query($link,$sql);
echo "$content";
if($data)
 echo "1";
 else
  echo "0";

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
谈谈PHP语法(2)
Oct 09 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
cakephp打印sql语句的方法
Feb 13 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 #PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 #PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 #PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 #PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 #PHP
总结PHP中DateTime的常用方法
Aug 11 #PHP
php使用curl详细解析及问题汇总
Aug 11 #PHP
You might like
main.php
2006/12/09 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python实现弹窗祝福效果
2019/04/07 Python
在python shell中运行python文件的实现
2019/12/21 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
机关党员进社区活动总结
2014/07/05 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
关于环保的广播稿
2015/12/17 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
Python中Selenium对Cookie的操作方法
2021/07/09 Python
Python实现滑雪小游戏
2021/09/25 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript