Home  >  Article  >  Backend Development  >  Use PHP to implement chat room function

Use PHP to implement chat room function

WBOY
WBOYOriginal
2023-06-22 22:58:452284browse

Now, with the popularization of the Internet, real-time communication has become an indispensable part of people's daily lives, and chat rooms, as a method of collective communication, are increasingly accepted and used by everyone. This article will introduce how to use PHP to implement a simple chat room function.

  1. Determine requirements

Before we start writing a program, we need to clarify our needs first. A simple chat room needs to have the following basic functions:

  • Users can register, log in and log out;
  • Users can view historical chat records;
  • Users can Send messages and have them appear instantly on the page to other online users.
  1. Design database

Before implementing the chat room function, we need to design the relevant database table structure first. The database tables required for a simple chat room may include the following:

  • User table: records the user's user name, password, registration time and other information;
  • Chat record table: Record all chat records in the chat room;
  • Online user table: record all currently online user information.
  1. Writing PHP code

Then you can start writing PHP code. We can divide it into the following steps:

3.1 Connect to the database

First you need to connect to the previously designed database in the PHP code. Just use the mysqli library provided by PHP. The connection code is as follows:

$mysqli = new mysqli("localhost", "root", "password", "chatroom");
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}

Here "localhost" is the host address of the database, "root" is the database user name, "password" is the database password, and "chatroom" is Name database. You need to modify it according to your own situation.

3.2 User registration, login and exit

User registration, login and exit are the basis of the chat room function. Let’s introduce them respectively below.

3.2.1 User registration

Users need to fill in their username and password when registering. We need to impose some restrictions on usernames and passwords, such as usernames cannot be repeated, passwords need to be encrypted, etc. The code is as follows:

// 判断用户名是否已存在
$query = "SELECT * FROM users WHERE username='$username'";
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
    echo '该用户名已被注册,请重新选择用户名!';
    return;
}

// 使用 sha1 对密码进行加密
$password_hash = sha1($password);

// 将加密后的密码和用户信息插入到用户表中
$add_time = date("Y-m-d H:i:s");
$query = "INSERT INTO users (username, password, add_time) VALUES ('$username', '$password_hash', '$add_time')";
if ($mysqli->query($query) === TRUE) {
    echo '注册成功!';
} else {
    echo '注册失败!';
}

3.2.2 User login

Users need to enter the correct user name and password when logging in to successfully log in. After successful login, the user information needs to be recorded in the online user table for later use. The code is as follows:

$query = "SELECT * FROM users WHERE username='$username' AND password='".sha1($password)."'";
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $user_id = $row['id'];
    $online_time = date("Y-m-d H:i:s");
    $query = "INSERT INTO online_users (user_id, online_time) VALUES ('$user_id', '$online_time')";
    if ($mysqli->query($query) === TRUE) {
        echo '登录成功!';
    } else {
        echo '登录失败!';
    }
} else {
    echo '用户名或密码错误,请重新输入!';
}

3.2.3 User exit

When the user exits, the corresponding user record in the online user table needs to be deleted. The code is as follows:

$online_time = date("Y-m-d H:i:s");
$query = "DELETE FROM online_users WHERE user_id='$user_id'";
if ($mysqli->query($query) === TRUE) {
    echo '退出成功!';
} else {
    echo '退出失败!';
}

3.3 Display historical chat records

In the chat room, users can view historical chat records. We can read several recent records from the chat record table and display them on the page. The code is as follows:

$query = "SELECT * FROM chat_records ORDER BY id DESC LIMIT 50";
$result = $mysqli->query($query);
echo '<div class="chat-history">';
while ($row = $result->fetch_assoc()) {
    echo '<div class="chat-message">';
    echo '<span class="message-name">'.$row['username'].'</span>';
    echo '<span class="message-time">'.$row['add_time'].'</span><br>';
    echo '<span class="message-text">'.$row['message'].'</span>';
    echo '</div>';
}
echo '</div>';

In the above code, we use CSS styles to beautify the display of chat records, which will not be described here.

3.4 Implementing instant messaging

Implementing instant messaging requires the use of Ajax technology, which means data interaction with the server without refreshing the page. We can realize the instant messaging function by entering a message in the chat input box and sending it to the server through Ajax. The code is as follows:

// 客户端通过Ajax发送消息到服务器
$(".chat-input").keypress(function(event) {
    if (event.which == 13) {
        var message = $(this).val().trim();
        if (message != '') {
            $.post("send_message.php", {
                message: message
            }, function(data, status) {
                if (data == 'ok') {
                    $(".chat-input").val('');
                } else {
                    alert('消息发送失败!');
                }
            });
        }
    }
});

// 服务器接收到消息后将消息存储到聊天记录表中
$message = $_POST['message'];
$add_time = date("Y-m-d H:i:s");
$query = "INSERT INTO chat_records (username, message, add_time) VALUES ('$username', '$message', '$add_time')";
if ($mysqli->query($query) === TRUE) {
    echo 'ok';
} else {
    echo 'error';
}

In the above code, we send the message in the chat input box to the server through Ajax, and store the message in the chat record table on the server side. In this way, other online users can instantly see the sent messages in the chat room.

  1. Summary

This article introduces how to use PHP to write a simple chat room function, including user registration, login and exit, display of historical chat records, and implementation of instant messaging, etc. Common Functions. As a method of collective communication, chat rooms allow users to communicate more conveniently on the Internet. Of course, in practical applications, we also need to consider more factors such as security and stability. This is just a simple example.

The above is the detailed content of Use PHP to implement chat room function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn