Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan kotak sembang mudah menggunakan PHP

Bagaimana untuk melaksanakan kotak sembang mudah menggunakan PHP

PHPz
PHPzasal
2023-04-04 09:12:571169semak imbas

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:

  1. PHP
  2. MySQL
  3. Keupayaan untuk menjalankan pelayan Apache

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);
}
5. Gunakan Ajax untuk mengemas kini rekod sembang

Bahagian terakhir kotak sembang adalah untuk mengemas kini rekod sembang dalam masa nyata. Untuk mencapai matlamat ini, kita boleh menggunakan Ajax untuk mengambil semula mesej baharu secara berkala daripada pangkalan data dan menambahkannya pada div "mesej". Berikut ialah demonstrasi kod menggunakan jQuery:

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);
6. Realisasikan pemesejan segera

Realisasi semua fungsi di atas memerlukan halaman web untuk disegarkan semula, dan komunikasi masa nyata boleh membawa pengalaman pengguna yang lebih baik. Seterusnya kami akan melaksanakan kotak sembang web yang membolehkan pemesejan segera untuk setiap pengguna.

Kod transformasi

  1. Pertama, kita perlu menukar kod kotak sembang di atas menjadi berbilang kotak sembang.
Kita perlu mencipta jadual bernama "ruang sembang" dalam pangkalan data MySQL untuk menyimpan maklumat setiap bilik sembang. Kami mencipta jadual menggunakan arahan berikut:

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;
Selepas mencipta ruang sembang baharu, semua bilik sembang pengguna hendaklah dipaparkan. Kami boleh menggunakan kod berikut untuk mendapatkan semua bilik sembang:

Laksanakan pemesejan segera
$sql = "SELECT * FROM chatrooms";
$result = $conn->query($sql);

// display chat rooms
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<a href=&#39;chatroom.php?id=" . $row["id"] . "&#39;>" . $row["name"] . "</a>";
    }
} else {
    echo "No chat rooms yet.";
}
  1. Seterusnya, kami akan melaksanakan cara untuk menyertai di halaman members.php Ciri pemesejan segera yang membolehkan pengguna melihat dan menyertai sembang langsung dalam bilik sembang yang sedang berjalan.
Kita perlu mencipta medan baharu dalam jadual spam dalam MySQL terlebih dahulu untuk merekodkan masa binaan terakhir bilik sembang langsung yang sedang berjalan.

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;
Untuk mencapai pemesejan segera, kami menggunakan protokol WebSocket. Pertama, kita perlu menjana kunci baharu dan menyimpannya dalam sesi.

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!

Kenyataan:
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