• 技术文章 >后端开发 >PHP问题

    php网站怎么写一个聊天

    angryTomangryTom2019-10-29 10:41:38原创1065

    php网站怎么写一个聊天

    网页聊天室我们可以使用多种方式实现,比如websocket,或是使用第三方的聊天服务,下面介绍一种最简单的方式,不断刷新页面获取信息。

    推荐学习:PHP视频教程

    1、数据库建立

    create table chat (
      chattime datetime,
      nick char(10),
      words char(150)
    );

    login.php

    <html>
    <head>
      <title>用户登录</title>
      <meta charset="utf-8">
    </head>
    <body>请输入您的昵称<br>
    <form action="main.php" method="post" target="_self">  //点击登录后跳转到main.php,并将输入的数据用post的方式发送过去
      <input type="text" name="nick" cols="20">
      <input type="submit" value="登录">
    </body>
    </html>

    main.php

    <?php
      session_start();
      $_SESSION['nick'] = $_POST['nick']; //获取login.php发送过来的数据,也就是用户昵称,并将它保存在session中用于对用户进行跟踪
    ?>
    <html>
      <frameset rows="80%, 20%">
      <frame src="cdisplay.php" name="chatdisplay"/>   // 聊天信息展示区
      <frame src="speak.php" name="speak"/>    //发言区
      </frameset>
    </html>

    speak.php

    <html>
    <head>
      <title>发言</title>
      <meta charset="utf-8">
    </head>
    <body>
    <?php
       session_start(); //如果设置北京时间,需要加上  date_default_timezone_set('PRC');
       if ($_POST['words']) {
       $conn = mysql_connect("127.0.0.1","root","******");  //连接数据库
       mysql_select_db("yuema", $conn);
       $time = date(y).date(m).date(d).date(h).date(i).date(s);  //当前时间
       $nick = $_SESSION['nick'];
       $words = $_POST['words'];
       $str = "insert into chat(chattime, nick, words) values('$time', '$nick', '$words');"; 
       mysql_query($str, $conn);  //将用户名,时间和发言内容进行插入
       mysql_close($conn);
    }
    ?>
     
    <form action="speak.php" method="post" target="_self">
      <input type="text" name="words" cols="20">
      <input type="submit" value="发言">
    </form>
    </body>
    </html>

    cdisplay.php

    <html>
    <head>
      <title>显示用户发言</title>
      <meta http-equiv="refresh" content="5;url=cdisplay.php">  //设置每隔5秒钟刷新一次
    </head>
    <body>
    <?php
      $conn = mysql_connect("127.0.0.1", "root", "******");
      mysql_select_db("yuema", $conn);
      $str = "select * from chat order by chattime;";
      $result = mysql_query($str, $conn);
      $rows = mysql_num_rows($result);
      mysql_data_seek($result, $rows-15); //取最近插入的15条数据
      if ($rows<15)
        $l = $rows;
      else  
        $l = 15;
      for ($i = 1; $i <= $l; $i++) {    //输出这15条数据
        list($chattime, $nick, $words) = mysql_fetch_row($result);
        echo $chattime;
        echo " ".$nick." ";
        echo $words;
        echo "<br>";
      }
    ?>
    </body>
    </html>

    结果展示

    1.jpg

    2. ajax获取,不刷新页面

    login.php

    <html>
    <head>
      <title>用户登录</title>
      <meta charset="utf-8">
    </head>
    <body>请输入您的昵称<br>
    <form action="main.php" method="post" target="_self">  //点击登录后跳转到main.php,并将输入的数据用post的方式发送过去
      <input type="text" name="nick" cols="20">
      <input type="submit" value="登录">
    </body>
    </html>

    main.php

    <?php
      session_start();
      $_SESSION['nick'] = $_POST['nick']; //获取login.php发送过来的数据,也就是用户昵称,并将它保存在session中用于对用户进行跟踪
    ?>
    <html>
      <frameset rows="80%, 20%">
      <frame src="cdisplay.php" name="chatdisplay"/>   // 聊天信息展示区
      <frame src="speak.php" name="speak"/>    //发言区
      </frameset>
    </html>

    speak.php

    <html>
    <head>
      <title>发言</title>
      <meta charset="utf-8">
    </head>
    <body>
    <?php
       session_start();   //如果设置北京时间,需要加上  date_default_timezone_set('PRC');
       if ($_POST['words']) {
       $conn = mysql_connect("127.0.0.1","root","******");  //连接数据库
       mysql_select_db("yuema", $conn);
       $time = date(y).date(m).date(d).date(h).date(i).date(s);  //当前时间
       $nick = $_SESSION['nick'];
       $words = $_POST['words'];
       $str = "insert into chat(chattime, nick, words) values('$time', '$nick', '$words');"; 
       mysql_query($str, $conn);  //将用户名,时间和发言内容进行插入
       mysql_close($conn);
    }
    ?>
     
    <form action="speak.php" method="post" target="_self">
      <input type="text" name="words" cols="20">
      <input type="submit" value="发言">
    </form>
    </body>
    </html>

    cdisplay.php

    <html>
    <head>
      <meta charset="utf-8">
      <title>显示用户发言</title>
      <script type="text/javascript" src="jquery.js"></script>  //jquery库,jquery.js可以在网上下载
      <script type="text/javascript">
          setInterval('show()', 3000);   // 设置自动刷新时间 3000毫秒也就是3秒钟
             function show() {
             $.ajax({
                url:'server_get.php',  //请求发送到server_get.php进行处理
                type:'post',
                dataType:'html',
                error:function() {
                  alert('请求失败,请稍后再试');
                },
                success:function(msg) {
                $('p').html(msg);  //设置body中p标签的内容
                }
           });
        }
      </script>
    </head>
    <body>
    <p></p>
    </body>
    </html>

    server_get.php

    <?php
      $conn = mysql_connect("127.0.0.1", "root", "******");
      mysql_select_db("yuema", $conn);
      $str = "select * from chat order by chattime;";
      $result = mysql_query($str, $conn);
      $rows = mysql_num_rows($result);
      mysql_data_seek($result, $rows-15);
      if ($rows < 15) 
        $l = $rows;
      else
        $l = 15; 
      $string = ""; 
      for ($i = 1; $i <= $l; $i++) {
        list($chattime, $nick, $words) = mysql_fetch_row($result);
        $string.=$chattime;
        $string.=" ";
        $string.=$nick;
        $string.=" ";
        $string.=$words;
        $string.="<br>";
      }
      echo $string; 
    ?>

    以上就是php网站怎么写一个聊天的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 聊天
    上一篇:php用户信息缓存怎么存 下一篇:php网站怎么部署到网上
    Web大前端开发直播班

    相关文章推荐

    • 实时聊天室:基于Laravel+Pusher+Vue通过事件广播实现• node.js来实现微信小程序实时聊天功能(附代码)• 怎样查询微信删除的聊天信息• 怎么恢复手机qq聊天记录

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网