ホームページ >バックエンド開発 >PHPの問題 >PHPでオンラインコミュニケーション機能を実装する方法

PHPでオンラインコミュニケーション機能を実装する方法

PHPz
PHPzオリジナル
2023-04-19 09:18:35618ブラウズ

現在のインターネット時代において、オンラインコミュニケーションは私たちの日常生活に不可欠な部分となっています。仕事でも生活でも、私たちは皆、オンラインで他の人とコミュニケーションしたり交流したりする必要があります。したがって、今日の Web サイト開発では、オンライン コミュニケーション機能の実装がますます重要になっています。この記事では、PHP を使用して基本的なオンライン通信機能を実装する方法を紹介し、完全なコード例を示します。

1. MySQL テーブルの設計

PHP コードを書き始める前に、必要に応じてデータベース テーブル構造を設計してください。たとえば、chat_message という名前のテーブル構造を設計します。次のデータ:

  • 送信者の ID;
  • 受信者の ID;
  • メッセージの内容;
  • 送信時刻。

上記の要件に基づいて、次のテーブル構造を設計する必要があります:

CREATE TABLE `chat_message` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `from_user_id` int(11) unsigned NOT NULL,
  `to_user_id` int(11) unsigned NOT NULL,
  `message` varchar(255) DEFAULT '',
  `send_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. MySQL データベースに接続します

PHP で、MySQL に接続します。データベースは非常にシンプルです。 mysqli_connect() 関数を使用して MySQL に接続するだけです。

次は、MySQL データベースへの接続の例です:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "chat_db";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接是否成功
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

3. チャット メッセージの挿入

ユーザーが Web サイトでチャット メッセージを送信するときは、次の操作を行う必要があります。メッセージをデータベースの中央に挿入します。

次は、チャット メッセージを挿入するコード例です:

// 获取发送人ID和接收人ID
$from_user_id = $_SESSION['user_id'];
$to_user_id = $_POST['to_user_id'];
$message = $_POST['message'];

// 获取当前时间
$send_time = date('Y-m-d H:i:s');

// 将数据插入到 chat_message 表中
$sql = "INSERT INTO chat_message (from_user_id, to_user_id, message, send_time)
VALUES ('$from_user_id', '$to_user_id', '$message', '$send_time')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

4. チャット履歴の取得

ユーザーが Web サイトでチャット履歴を表示するとき、以下を取得する必要があります。データベースの歴史的なニュースから取得します。

以下は、チャット履歴レコードを取得するコード例です。

// 获取对话双方的ID
$user1_id = $_GET['user1_id'];
$user2_id = $_GET['user2_id'];

// 查询消息记录
$sql = "SELECT * FROM chat_message WHERE
        (from_user_id = '$user1_id' AND to_user_id = '$user2_id') OR
        (from_user_id = '$user2_id' AND to_user_id = '$user1_id')
        ORDER BY send_time ASC";
$result = mysqli_query($conn, $sql);

// 输出消息记录
while($row = mysqli_fetch_assoc($result)) {
    echo $row['send_time'] . " - " . $row['message'] . "<br>";
}

上記のコードは、chat_message テーブルから現在のユーザーに関連するチャット レコードをクエリし、メッセージ レコードを出力します。送信時間順。

5. Web UI の実装

最後に、ユーザーがブラウザーでチャット メッセージを送受信できるようにする Web UI を作成する必要があります。

以下は、Web UI を実装するコード例です:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>网上交流功能</title>
</head>
<body>
    <h1>网上交流功能</h1>
    <div id="chat_box" style="border: 1px solid black; height: 500px; overflow: auto;"></div>
    <br>
    <form id="message_form" action="" method="POST">
        接收人ID:<input type="text" name="to_user_id"><br><br>
        消息内容:<input type="text" name="message"><br><br>
        <input type="submit" value="发送">
    </form>

    <script>
        // 获取聊天记录
        setInterval(function() {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("chat_box").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET", "get_chat_history.php?user1_id="+user1_id+"&user2_id="+user2_id, true);
            xmlhttp.send();
        }, 1000);

        // 发送消息
        document.getElementById("message_form").addEventListener("submit", function(event) {
            event.preventDefault();
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    console.log(this.responseText);
                }
            };
            var data = new FormData(document.getElementById("message_form"));
            xmlhttp.open("POST", "insert_chat_message.php", true);
            xmlhttp.send(data);
            document.getElementById("message_form").reset();
        });
    </script>
</body>
</html>

上記のコードは Web UI を作成し、ユーザーがフォームに記入することでメッセージを送受信できるようにします。 setInterval() 関数を使用してチャット レコードを定期的にクエリし、XMLHttpRequest オブジェクトを使用してサーバーにデータを送信することで、新しいチャット レコードをリアルタイムで確認できます。同時に、addEventListener() 関数を使用してイベント リスナーをフォームに追加することで、ユーザーが送信したメッセージをキャプチャしてデータベースに挿入できます。

6. 完全なコード

次は、MySQL データベースに接続し、チャット メッセージを挿入し、チャット履歴を取得するための PHP コードの例です。

connect_db.php

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "chat_db";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接是否成功
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
?>

insert_chat_message.php

get_chat_history.php

上記は、PHP を使用してオンライン通信を実装する完全なコード例です。機能。このコード例はセキュリティなどを考慮したものではありませんので、ご利用の際は改善・最適化に注意してください。

以上がPHPでオンラインコミュニケーション機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。