Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk melaksanakan idea bilik sembang dalam php

Bagaimana untuk melaksanakan idea bilik sembang dalam php

藏色散人
藏色散人asal
2021-09-10 10:40:232154semak imbas

Idea untuk melaksanakan ruang sembang dalam PHP ialah: 1. Buat jadual; 2. Tetapkan "connect.php" untuk menyambung ke pangkalan data 3. Buat fail antara muka sembang pengguna "; client.php"; 4. Laksanakan pertanyaan untuk melihat sama ada terdapat perkhidmatan pelanggan Balas kepada mesej; 5. Sediakan halaman sembang perkhidmatan pelanggan "server.php"; 6. Hantar mesej kepada pengguna.

Bagaimana untuk melaksanakan idea bilik sembang dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Perkara untuk melaksanakan sembang bilik dengan php

Penjelasan terperinci kaedah pelaksanaan mudah ruang sembang PHP

Contoh dalam artikel ini menerangkan kaedah pelaksanaan mudah ruang sembang PHP. Kongsi dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:

Pengguna => Khidmat Pelanggan (mula-mula masukkan maklumat ke dalam pangkalan data, dan kemudian terus bertanya data dari pangkalan data dan hantar ke perkhidmatan pelanggan melalui sambungan ob long)

Perkhidmatan Pelanggan = > Pengguna (mula-mula terima maklumat pengguna, kemudian simpan maklumat balasan ke dalam pangkalan data, dan akhirnya meminta data secara berterusan melalui undian ajax, dan paparkannya ke antara muka sembang pengguna; )

[Nota:] Jika semua halaman disediakan, paut ke halaman Sembang perkhidmatan pelanggan pertama (server.php), kemudian paut ke halaman pengguna (client.php)

Penerangan gambar :

Langkah 1: Buat jadual

Penjelasan: rec: pihak yang menerima maklumat, pengirim: pihak yang menghantar maklumat, kandungan: menghantar kandungan, is_new : sebagai tanda, 1 ialah maklumat baharu dan 2 ialah maklumat baca (lalai ialah 1)

CREATE TABLE `chat_log` (
 `log_id` int(11) NOT NULL AUTO_INCREMENT,
 `rec` varchar(10) NOT NULL COMMENT '接受方',
 `sender` varchar(10) NOT NULL COMMENT '发送方',
 `content` text NOT NULL COMMENT '发送内容',
 `is_new` tinyint(4) NOT NULL DEFAULT '1' COMMENT '信息 1新信息 0 已读信息',
 PRIMARY KEY (`log_id`,`rec`)
) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 COMMENT='用户客服聊天轮询表'

Langkah 2: Pautan ke pangkalan data: connect.php

$link = mysql_connect('localhost', 'root', '');
mysql_query("set names utf8");
mysql_select_db("chat");

Langkah 3 : Antara muka sembang pengguna: client.php

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>User窗口</title>
  <style>
    #user {
      width: 440px;
      height: 300px;
      border: 1px solid blue;
    }
  </style>
  <script src=&#39;http://code.jquery.com/jquery-latest.js&#39;></script>
  <script>
    $(function () {
      $("#btn").click(function () {
        var content = $("textarea").val();
        if(content == &#39;&#39;){alert(&#39;发送内容不能为空&#39;);return;}
        // 发送给客服
        <!-- 把提交数据通过toServer.php存入数据库-->
        $.post("toServer.php", {&#39;msg&#39;:content}, function (res) {
          var obj = JSON.parse(res);
          $("#user").append("<b>你向客服发送:</b>" + obj + "<br>");
          $("textarea").val(" ");
        });
      });
      // 用ajax轮询方式 从数据库获取 客服是否有发送消息给用户
      var polling = {
        "url"   : &#39;fromServer.php&#39;,
        "dataType" : &#39;json&#39;,
        success  : function (res) {
          //ajax请求返回的数据
          var obj = res;
          //追加到User聊天的页面
          $("#user").append("<b style=&#39;color:red&#39;>客服回复:" + obj.content + "</b><br>");
          $.ajax(polling);
        }
      };
      $.ajax(polling); //轮询发送ajax请求
    })
  </script>
</head>
<body>
  <iframe src="" width="0" height="0" frameborder="0"></iframe>
  <h3>与客服聊天窗口</h3>
  <p contenteditable="true" id="user"></p>
  <p>
    <textarea name="msg_list" id="" cols="60" rows="15"></textarea>
    <button id="btn" type="button">send..</button>
  </p>
</body>
</html>

Keempat: Pengguna menghantar maklumat ke pangkalan data ajax Tinjauan untuk melihat sama ada terdapat sebarang mesej balasan perkhidmatan pelanggan

kepadaServer.php

require(&#39;connect.php&#39;);
$msg = htmlspecialchars($_POST[&#39;msg&#39;], ENT_QUOTES);
$sql = "INSERT INTO `chat_log` (rec, sender, content) VALUES(&#39;admin&#39;, &#39;user&#39;, &#39;$msg&#39; )";
mysql_query($sql, $link);
echo json_encode($msg);

fromServer.php

require(&#39;connect.php&#39;);
set_time_limit(0);//永不超时
while (true){
    $sql = "SELECT * FROM `chat_log` WHERE rec=&#39;user&#39; 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[&#39;log_id&#39;];
      mysql_query($sql,$link);
      die(json_encode($row));
    }
}

Langkah 5: Pelayan halaman sembang perkhidmatan pelanggan.php

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>客服窗口</title>
  <style>
    #server {
    width: 440px;
    height: 300px;
    border: 1px solid blue;
    }
  </style>
  <script src=&#39;http://code.jquery.com/jquery-latest.js&#39;></script>
  <!-- 进行ob缓存输出 -->
  <script>
    function showMsg(res) {
      var obj = eval(res);
      $("#server").append("<b style=&#39;color:red&#39;>User向你发送:" + obj.content + "</b><br/>");
    }
    //回复User信息
    $(function () {
      $("#btn").click(function () {
        var content = $("textarea").val();
        //客服发送的信息通过toClient.php存入数据库
        $.post("toClient.php", {&#39;msg&#39;:content},function (res) {
          var obj = JSON.parse(res);
          $("#server").append("你向User发送:" + obj+ "<br>");
          $("textarea").val("");
        })
      });
    })
  </script>
</head>
<body>
  <iframe src="./fromClient.php" width="0" height="0" frameborder="0"></iframe>
  <h3>与User聊天窗口</h3>
  <p contenteditable="true" id="server"></p>
  <p>
    <textarea name="msg_list" id="" cols="60" rows="15"></textarea>
    <button id="btn" type="button">send..</button>
  </p>
</body>
</html>

Langkah 6: Khidmat pelanggan menanyakan pangkalan data untuk melihat sama ada pengguna mempunyai menghantar maklumat. Hantar maklumat kepada pengguna

daripadaClient.php

require(&#39;connect.php&#39;);
ob_start();       //打开一个输出缓冲区,所有的输出信息不再直接发送到浏览器,而是保存在输出缓冲区里面
echo str_repeat(&#39;&#39;, 4096);
ob_end_flush();     //发送内部缓冲区到浏览器,删除缓冲区内容,关闭缓冲区
ob_flush();       //发送内部缓冲区的内容到浏览器,删除缓冲区的内容,不关闭缓冲区
set_time_limit(0);//永不超时
while(true){
    $sql = "select * from `chat_log` where rec= &#39;admin&#39; 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[&#39;log_id&#39;];
      mysql_query($sql, $link);
      echo "<script>parent.showMsg(".json_encode($row).")</script>";
      ob_flush();
      flush();      //将ob_flush释放出来的内容,以及不在PHP缓冲区中的内容,全部输出至浏览器;刷新内部缓冲区的内容,并输出
      sleep(1);
    }
}

kepadaClient.php

require(&#39;connect.php&#39;);
$msg = htmlspecialchars($_POST[&#39;msg&#39;], ENT_QUOTES);
if(!empty($msg)){
    $sql = "insert into chat_log(rec, sender, content) values(&#39;user&#39;, &#39;admin&#39;, &#39;$msg&#39;)";
    mysql_query($sql);
    echo json_encode($msg);
}

Di sini saya sedang menjalankan (server.php dan client.php ) pada komputer saya untuk berbual Pada mulanya, saya menjadi lebih baik dan berbual secara normal Saya tidak tahu sebabnya.
(Saya faham ia disebabkan oleh sambungan yang panjang)

[Pembelajaran yang disyorkan: "Tutorial Video PHP"]

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan idea bilik sembang dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn