Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie Chatroom-Ideen in PHP

So implementieren Sie Chatroom-Ideen in PHP

藏色散人
藏色散人Original
2021-09-10 10:40:232107Durchsuche

Die Idee, einen Chatroom in PHP zu implementieren, ist: 1. Erstellen Sie eine Tabelle; 2. Legen Sie „connect.php“ fest, um eine Verbindung zur Datenbank herzustellen. 3. Erstellen Sie die Benutzer-Chat-Schnittstellendatei „client.php“. 4. Implementieren Sie eine Abfrage für Kundendienst-Antwortinformationen. 5. Legen Sie die Kundendienst-Chat-Seite „server.php“ fest. 6. Senden Sie einfach die Nachricht an den Benutzer.

So implementieren Sie Chatroom-Ideen in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Die Idee, einen Chatroom in PHP zu implementieren

Detaillierte Erklärung der einfachen Implementierung Methode des PHP-Chatrooms

Dieser Artikel beschreibt den PHP-Chatroom mit Beispielen. Einfache Implementierungsmethode. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:

Benutzer => Kundendienst (Speichern Sie zuerst die Informationen in der Datenbank, fragen Sie dann kontinuierlich die Daten aus der Datenbank ab und senden Sie sie über eine ob + lange Verbindung an den Kundendienst )

Kundendienst => Benutzer (erhalten Sie zuerst die Benutzerinformationen, speichern Sie dann die Antwortinformationen in der Datenbank und fordern Sie schließlich kontinuierlich Daten durch Ajax-Abfrage an und zeigen Sie sie auf der Benutzer-Chat-Schnittstelle an)

[Hinweis:] Wenn alle Seiten werden eingerichtet, zuerst Link zur Kundenservice-Chat-Seite (server.php) und dann Link zur Benutzerseite (client.php)

Bildbeschreibung:

Schritt 1: Erstellen Sie eine Tabelle

Anleitung : rec: die Partei, die die Informationen empfängt, sender: die Partei, die die Informationen sendet, content: der sendende Inhalt, is_new: als Markierung, 1 ist eine neue Nachricht 2 ist eine gelesene Nachricht (Standard ist 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='用户客服聊天轮询表'

Schritt 2: Link zur Datenbank: connect.php toServer.php

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

fromServer.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>

Schritt 5: Kundendienst-Chatseite server.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);

Schritt 6: Kundendienst-Datenbank abfragen, um zu sehen, ob der Benutzer Informationen gesendet hat + Nachrichten an Benutzer senden

fromClient.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));
    }
}

toClient.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>

Hier führe ich den Chat (server.php und client.php) zunächst aus, aber nach einer Weile wird es besser. Wir haben gechattet, aber ich bin mir nicht sicher Wenn jemand es weiß, wäre ich sehr dankbar!

(Ich verstehe, dass es durch lange Verbindungen verursacht wird)

[Lernempfehlung: „

PHP-Video-Tutorial

“]

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Chatroom-Ideen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn