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:
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;
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()); }
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); }
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>"; }
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>
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()); } ?>
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!