Dalam era Internet hari ini, orang ramai semakin menumpukan perhatian kepada kepentingan pemesejan segera. Sama ada rangkaian sosial, e-dagang, pendidikan dalam talian atau bidang lain, adalah perlu untuk menyediakan fungsi sembang segera untuk memenuhi keperluan pengguna. Sebagai bahasa pembangunan Web, PHP umumnya menggunakan Ajax dan Websocket untuk melaksanakan fungsi pemesejan segera. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan kotak sembang mudah menggunakan PHP.
1. Persediaan
Sebelum kita mula, kita perlu memastikan bahawa kita mempunyai persekitaran berikut:
Persekitaran ini adalah asas yang kami perlukan untuk melengkapkan artikel ini.
2. Cipta antara muka kotak sembang
Mula-mula kita perlu mencipta halaman HTML yang mudah untuk memaparkan kotak sembang. Halaman ini terdiri daripada dua bahagian: kawasan untuk memaparkan sejarah sembang dan kawasan untuk memasuki kandungan sembang. Anda boleh menggunakan Bootstrap untuk mencantikkan halaman web anda.
Sebagai contoh, kita boleh mencipta elemen Div dengan id "kotak sembang" yang mengandungi dua elemen anak: elemen div dengan id "mesej" dan elemen borang dengan id "input". Gaya CSS elemen "mesej" dan "input" boleh dicantikkan menggunakan Bootstrap.
3. Laksanakan paparan rekod sembang
Seterusnya, kita perlu melaksanakan fungsi paparan rekod sembang. Kita perlu menyimpan sejarah sembang dalam pangkalan data dan mendapatkan semula mesej daripada pangkalan data dan kemudian memaparkannya dalam elemen Div "mesej".
Dalam MySQL, anda boleh menggunakan arahan berikut untuk mencipta jadual bernama "chat" yang mengandungi empat medan: "id", "name", "message" dan "time".
CREATE TABLE `chat` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `message` text NOT NULL, `time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Untuk menyambung ke pangkalan data MySQL dalam PHP, kami menggunakan kod berikut untuk menyambung ke pangkalan data:
$servername = "localhost"; $username = "username"; $password = "password"; $dbname = "chat"; // create connection $conn = new mysqli($servername, $username, $password, $dbname); // check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
Seterusnya, kami perlu mendapatkan semula sejarah sembang daripada pangkalan data melalui kod berikut dan Dipaparkan pada halaman:
$sql = "SELECT name, message, time FROM chat ORDER BY id ASC"; $result = $conn->query($sql); // display chat history if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<p><strong>" .$row["name"]. "</strong> " .$row["message"]. "</p>"; } } else { echo "No messages yet."; }
Kod di atas menggunakan pernyataan pilih untuk mendapatkan semula rekod sembang daripada pangkalan data, dan kemudian menggunakan gelung "sementara" untuk memaparkan rekod ini pada muka surat satu persatu.
4. Realisasikan penghantaran kandungan sembang
Seterusnya kita perlu sedar fungsi membenarkan pengguna lain menerima mesej sembang dalam masa nyata seperti kotak sembang QQ selepas pengguna memasukkan kandungan sembang . Untuk memasukkan kandungan sembang pada halaman web, kami boleh menambah kotak input dan butang hantar ke borang "input". Apabila pengguna mengklik butang hantar, kandungan sembang akan dihantar ke kod PHP kami dan kemudian disimpan ke pangkalan data MySQL.
Kod PHP boleh mendapatkan kandungan sembang dan nama pengguna daripada borang dan menyimpannya ke dalam pangkalan data MySQL menggunakan kod berikut: Nama pengguna dan kandungan sembang) dimasukkan ke dalam jadual "sembang" yang terletak dalam pangkalan data MySQL untuk simpan kandungan sembang.
if (isset($_POST['submit'])) { //check if form submitted $name = $_POST['name']; $message = $_POST['message']; //insert message into database $sql = "INSERT INTO chat (name, message) VALUES ('$name', '$message')"; $result = $conn->query($sql); }
Kod di atas menggunakan Ajax untuk memanggil fail getchat.php secara berkala untuk mendapatkan semula mesej baharu daripada pangkalan data MySQL. Dalam fail ini, kita boleh menggunakan kod berikut untuk mendapatkan semula mesej:
$(document).ready(function(){ updateChat(); }); function updateChat() { $.ajax({ type: "GET", url: "getchat.php", success: function(data){ $("#message").html(data); // replace message div with result } }); setTimeout(updateChat, 3000); // update chat every 3 seconds }
Kod di atas menggunakan penyataan pilih untuk mendapatkan semula mesej baharu daripada pangkalan data dan memaparkannya dalam halaman menggunakan kaedah yang serupa dengan satu yang diterangkan sebelum ini.
$sql = "SELECT name, message, time FROM chat WHERE id > $last_id ORDER BY id ASC"; $result = $conn->query($sql); // display chat history if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<p><strong>" .$row["name"]. "</strong> " .$row["message"]. "</p>"; } } mysqli_close($conn);
Kod transformasi
Kemudian, kami perlu menambah borang yang membolehkan pengguna memasukkan nama ruang sembang baharu. Kami juga harus menambah butang yang membolehkan pengguna membuat bilik sembang baharu. Apabila pengguna menyerahkan borang, ruang sembang baharu harus ditambahkan pada jadual bilik sembang.
CREATE TABLE `chatrooms` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
$sql = "SELECT * FROM chatrooms"; $result = $conn->query($sql); // display chat rooms if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "<a href='chatroom.php?id=" . $row["id"] . "'>" . $row["name"] . "</a>"; } } else { echo "No chat rooms yet."; }
Setiap kali mesej baharu dihantar ke bilik sembang, kami perlu mengemas kini medan last_build_time dalam jadual spam untuk mencipta binaan terkini pada pelayan.
ALTER TABLE `spam` ADD `last_build_time` TIMESTAMP NULL ON DELETE SET NULL;
Seterusnya, kita perlu menggunakan JavaScript dan perpustakaan untuk menyambung ke pelayan WebSocket dan mendapatkan binaan terkini.
// Connect to WebSocket server var ws = new WebSocket('wss://' + SERVER_HOST + ':' + WS_PORT + '/chat/' + key); // Send a message to the server ws.send('build'); // Handle incoming messages from the server ws.onmessage = function(event) { var message = JSON.parse(event.data); if (message.action == 'build') { $('#chatbox').html(message.html); } if (message.action == 'addMessage') { addMessage(message); } if (message.action == 'removeMessage') { removeMessage(message); } } function addMessage(message) { // add new message to chatbox var html = '<div class="message">'; html += '<span class="name">' + message.name + '</span>'; html += '<span class="time">' + message.time + '</span>'; html += '<div class="content">' + message.content + '</div>'; html += '</div>'; $('#chatbox .messages').append(html); } function removeMessage(message) { // remove message from chatbox $('#chatbox .messages .message[data-id="' + message.id + '"]').remove(); }
以上代码使用 WebSocket 协议连接服务器,并从服务器接收最新的构建版本,然后更新会话中的 HTML 聊天记录以反映新的消息。
总结
通过这个实例,我们学习了如何使用 PHP 开发一个简单的即时聊天应用,理解了如何使用 Ajax、MySQL 和 WebSocket 等技术实现真正的实时聊天应用。此外,我们还涵盖了许多重要的主题,例如如何管理多个聊天室、如何存储并获取聊天记录等。希望这个例子能给你一个有意义的启示,并启发你在自己的项目中实现即时通讯的功能。
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kotak sembang mudah menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!