Bagaimana untuk melaksanakan fungsi komunikasi dalam talian dalam php

PHPz
Lepaskan: 2023-04-19 09:44:16
asal
608 orang telah melayarinya

Dalam era Internet sekarang, komunikasi dalam talian telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian kita. Sama ada di tempat kerja atau dalam kehidupan, kita semua perlu berkomunikasi dan berinteraksi dengan orang lain dalam talian. Oleh itu, melaksanakan fungsi komunikasi dalam talian menjadi semakin penting dalam pembangunan laman web masa kini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi komunikasi dalam talian asas dan menyediakan contoh kod lengkap.

1. Reka bentuk jadual MySQL

Sebelum anda mula menulis kod PHP, sila reka struktur jadual pangkalan data mengikut keperluan anda Contohnya, reka struktur jadual bernama chat_message, yang perlu menyimpan data berikut:

  • ID pengirim;
  • ID Penerima;
  • Berdasarkan keperluan di atas, kita perlu mereka bentuk struktur jadual berikut:
2 Sambung ke pangkalan data MySQL

Dalam PHP, menyambung kepada pangkalan data MySQL adalah sangat mudah. Kita hanya perlu menggunakan fungsi mysqli_connect() untuk menyambung ke MySQL.
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;
Salin selepas log masuk

Berikut ialah contoh penyambungan ke pangkalan data MySQL:

3 Sisipkan mesej sembang

Apabila pengguna menghantar mesej sembang di tapak web, kita perlu. masukkan mesej ke dalam pangkalan data.
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "chat_db";

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

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

Berikut ialah contoh kod untuk memasukkan mesej sembang:

4 Dapatkan sejarah sembang

Apabila pengguna melihat sejarah sembang di tapak web, kita perlu mendapatkannya daripada pangkalan data Dapatkan berita sejarah.
// 获取发送人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);
}
Salin selepas log masuk

Berikut ialah contoh kod untuk mendapatkan sejarah sembang:

Kod di atas akan menanyakan rekod sembang yang berkaitan dengan pengguna semasa daripada jadual chat_message dan mengeluarkan rekod mesej dalam susunan masa penghantaran .

5. Laksanakan UI 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>";
}
Salin selepas log masuk

Akhir sekali, kita perlu menulis UI web yang membolehkan pengguna menghantar dan menerima mesej sembang dalam penyemak imbas.

Berikut ialah contoh kod untuk melaksanakan UI web:

Kod di atas akan mencipta UI web dan membenarkan pengguna menghantar dan menerima mesej dengan mengisi borang. Dengan menggunakan fungsi setInterval() untuk menanyakan rekod sembang secara berkala dan menggunakan objek XMLHttpRequest untuk menghantar data ke pelayan, kami boleh menyemak rekod sembang baharu dalam masa nyata. Pada masa yang sama, dengan menambahkan pendengar acara pada borang menggunakan fungsi addEventListener(), kami boleh menangkap mesej yang diserahkan pengguna dan memasukkannya ke dalam pangkalan data.

6. Kod lengkap
<!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>
Salin selepas log masuk

Berikut ialah contoh kod PHP untuk menyambung ke pangkalan data MySQL, memasukkan mesej sembang dan mendapatkan sejarah sembang.

connect_db.php

insert_chat_message.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());
}
?>
Salin selepas log masuk
get_chat_history.php

Salin selepas log masuk
Di atas ialah penggunaan PHP untuk melaksanakan fungsi komunikasi dalam talian Contoh kod lengkap. Oleh kerana contoh kod ini tidak mengambil kira aspek lain seperti keselamatan, sila beri perhatian kepada penambahbaikan dan pengoptimuman apabila menggunakannya.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan