php聊天室

前端页面

chat_room.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="../ico/index.ico" />
    <title>聊天室</title>
    <style>
        div {
            width: 32rem;
            yellowgreen;
        }
    </style>
</head>
<body>
    <script>
        document.write(new Date());
    </script>
    <div id="con">
    </div>
    <form action="" method="">
        <input type="text" name="uname" id="uname" size="10">
        <input type="text" size="40" id="content">
        <input type="button" value="发送" id="btn" onclick="demo02()">
    </form>
    <script>
        function createXmlHttpRequest() {
            var request = false;
            request = new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
            if (request == false) {
                request = ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。
            } else if (request == false) {
                request = ActiveXobject("Microsoft.XMLHTTP");//使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。
            } else if (request == false) {
                //alert("创建request失败!");
            } else {
                //alert("创建成功!")
            }
        }
        function demo02() {
            var request = false;
            request = new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
            if (request == false) {
                request = ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。
            } else if (request == false) {
                request = ActiveXobject("Microsoft.XMLHTTP");//使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。
            } else if (request == false) {
                //alert("创建request失败!");
            } else {
                //alert("创建成功!")
            }
            var unameobj = document.getElementById("uname");
            var uname = unameobj.value;
            var contentobj = document.getElementById("content");
            var content = contentobj.value
            contentobj.value = '';
            var mess = "username=" + uname + "&" + "content=" + content;
            // alert(mess);
            request.open("POST", "php/write.php", true);
            request.setRequestHeader("Content-type", 'application/x-www-form-urlencoded');
            request.send(mess);
        }
        function getMass() {
            var request = false;
            request = new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
            if (request == false) {
                request = ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。
            } else if (request == false) {
                request = ActiveXobject("Microsoft.XMLHTTP");//使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。
            } else if (request == false) {
                //alert("创建request失败!");
            } else {
                //alert("创建成功!")
            }
            createXmlHttpRequest();
            setInterval(function () {
                request.open("GET", "php/read.php", true);
                request.send(null);
                request.onreadystatechange = function () {
                    if (request.readyState == 4 && request.status == 200) {
                        //alert("服务器响应数据:" + this.responseText);
                        document.getElementById("con").innerHTML = this.responseText;
                    }
                }
            }, 2000);
        }
        getMass();
    </script>
</body>
</html>

php后端页面

conn.php:连接数据库

<?php
header("Content-Type:text/html;charset=utf8");
$mysql_server_name = "localhost:3306"; //连接数据库端口
$mysql_username = "root"; //用户名
$mysql_password = "123456"; //密码
$mysql_database = "test"; //数据库名称  
$conn = new Mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database); //构造函数mysql
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
    }
    echo "连接成功";
 

write.php:写入数据库消息

<?php
include_once 'conn.php';
$username = $_POST["username"];
$content = $_POST["content"];
// $username = "username";
// $content = "content";
$time = date("Y/m/d H:i:s");
if ($content == null) {
    echo "<script>alert('内容不能为空!')</script>";
} else {
    # code...
    $sql = "INSERT INTO message(time,username,message) VALUES('$time','$username','$content')";
    $conn->query($sql);
}

read.php :读取数据库中存入的消息

<?php
include_once 'conn.php';
$sql = "SELECT time,username,message FROM message";
$array = $conn->query($sql);
$data = mysqli_fetch_all($array, MYSQLI_NUM);
echo '<br/>';
// print_r($data);
   // echo file_get_contents("message.txt");
//echo $data[]
$count = count($data);
for ($i=0; $i <$count ; $i++) { 
   $temp =$data[$i];
   for ($j=0; $j < 3; $j++) { 
      # code...
      echo $temp[$j];
      echo '------';
   }
   echo '<br/>';
}
 

Php7+Mysql8实现简单的网页聊天室功能的更多相关文章

  1. Java和WebSocket开发网页聊天室

    小编心语:咳咳咳,今天又是聊天室,到现在为止小编已经分享了不下两个了,这一次跟之前的又不大相同,这一次是网页聊天室,具体怎么着,还请各位看官往下看~ Java和WebSocket开发网页聊天室 一.项 ...

  2. JavaWeb网页聊天室(WebSocket即时通讯)

    原文:http://baike.xsoftlab.net/view/656.html Git地址 http://git.oschina.net/loopcc/WebSocketChat 概要: Web ...

  3. 基于flask的网页聊天室(三)

    基于flask的网页聊天室(三) 前言 继续上一次的内容,今天完成了csrf防御的添加,用户头像的存储以及用户的登录状态 具体内容 首先是添加csrf的防御,为整个app添加防御: from flas ...

  4. 基于flask的网页聊天室(二)

    基于flask的网页聊天室(二) 前言 接上一次的内容继续完善,今天完成的内容不是很多,只是简单的用户注册登录,内容具体如下 具体内容 这次要加入与数据哭交互的操作,所以首先要建立相关表结构,这里使用 ...

  5. 基于flask的网页聊天室(一)

    基于flask的网页聊天室(一) 基本目标 基于flask实现的web聊天室,具有基本的登录注册,多人发送消息,接受消息 扩展目标 除基本目标外添加当前在线人数,消息回复,markdown支持,历史消 ...

  6. WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)

    websocket是HTML5中的比较有特色一块,它使得以往在客户端软件中常用的socket在web程序中也能轻松的使用,较大的提高了效率.废话不多说,直接进入题. 网页聊天室包括2个部分,后端服务器 ...

  7. 使用Servlet和JSP实现一个简单的Web聊天室系统

    1 问题描述                                                利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...

  8. 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

    基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...

  9. Netty学习笔记(四) 简单的聊天室功能之服务端开发

    前面三个章节,我们使用了Netty实现了DISCARD丢弃服务和回复以及自定义编码解码,这篇博客,我们要用Netty实现简单的聊天室功能. Ps: 突然想起来大学里面有个课程实训,给予UDP还是TCP ...

随机推荐

  1. uni-app 使用个推推送系统消息

    原文可查看此处 ,搜索 uni-app 使用个推推送系统消息 https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3NTA ...

  2. order by 注入姿势

    order by 注入原理 其实orde by 注入也是sql注入的一种,原理都一样就是mysql语法的区别,order by是用来排序的语法. sql-lab讲解 判断方法 1.通过做运算来判断如: ...

  3. 安装archlinux

    arch安装步骤 archlinux官方安装wiki 1.分区and格式化分区      (分区用fdisk,格式化分区用mkfs) 2.挂载分区  (mount命令) 3.安装archlinux   ...

  4. 机器学习实战基础(九):sklearn中的数据预处理和特征工程(二) 数据预处理 Preprocessing & Impute 之 数据无量纲化

    1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”.譬如梯度和矩阵为核心的算法中,譬如逻辑回 ...

  5. ShaderLab-坐标转换

    观察空间就是相机的空间 投影矩阵本质就是对x.y.z分量进行不同程度的缩放(z还做了平移),结果就是视锥体近切面远切面变成正方形.视锥体的中心在(0,0). (对于正交相机,这一步已经得到了立方体) ...

  6. 【测试工具】这些APP实用测试工具,不知道你就out了!

    本期,我将给大家介绍14款实用的测试工具,希望能够帮到大家!(建议收藏) UI自动化测试工具 1. uiautomator2 Github地址:https://github.com/openatx/u ...

  7. Python Ethical Hacking - WEB PENETRATION TESTING(3)

    CRAWLING SUMMARY Our crawler so far can guess: Subdomains. Directories. Files. Advantages: ->Disc ...

  8. 题解 CF1354D 【Multiset】

    考试拿到题,一看,这不是权值线段树吗? 思路 使用线段树每个节点维护该区间内元素出现次数. 根据题目,对于加入.删除元素,我们可以单点修改(\(+1\).\(-1\)),对于输出,我们可 随便 遍历找 ...

  9. vue : 检测用户上传的图片的宽高

    需求: 用户可上传3-6张图片(第 1 2 3 张必须传),上传的图片必须是540 * 330 像素. 第一步,获取上传的图片的宽高. 初始化一个对象数组,宽高均设为0. 如果用户上传的图片没有上限, ...

  10. Codeforces1379-题解

    很久以前,申蛤申请了一个cf号叫 wzxakioi 有一天,戌蛤带着申蛤用这个账号打了一场div3,然后它的rating超过了shzr 之后申蛤又用这个号打了三场div2,于是  CF1379C 题意 ...