Home  >  Article  >  Backend Development  >  Multi-user session management and real-time notifications for PHP live chat system

Multi-user session management and real-time notifications for PHP live chat system

PHPz
PHPzOriginal
2023-08-25 23:37:45603browse

Multi-user session management and real-time notifications for PHP live chat system

Multi-user session management and real-time notification of PHP real-time chat system

In today's digital era, real-time communication has become one of the important ways for people to communicate. In order to meet users' needs for real-time chat, it is very necessary to develop a real-time chat system based on PHP. This article will introduce how to use PHP to implement multi-user session management and real-time notification functions, and provide corresponding code examples.

1. Multi-user session management

Multi-user session management is the basis for realizing a real-time chat system. After logging into the system, users need to communicate with other online users. In order to implement session management, you first need to create a user table to store the user's basic information, such as user name, password, etc. The sample code is as follows:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL
);

During the login process, after the user enters the username and password, verification is required. The sample code is as follows:

<?php
session_start();

// 数据库配置
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "chat";

// 连接数据库
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 获取用户输入的用户名和密码
$username = $_POST['username'];
$password = $_POST['password'];

// 查询用户信息
$sql = "SELECT id, username, password FROM users WHERE username = '$username'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 验证密码
    $row = $result->fetch_assoc();
    if (password_verify($password, $row['password'])) {
        // 登录成功
        $_SESSION['user_id'] = $row['id'];
        $_SESSION['username'] = $row['username'];
        header("Location: chat.php");
    } else {
        // 密码错误
        echo "密码错误";
    }
} else {
    // 用户不存在
    echo "用户不存在";
}

$conn->close();
?>

After successful login, the user's session information is stored in $_SESSION for subsequent use.

2. Real-time notification

Real-time notification is the key to realizing a real-time chat system. When a user is having a conversation, they need to send messages to the other party in real time and receive the other party's reply. To achieve real-time notifications, WebSocket technology can be used. WebSocket is a protocol for full-duplex communication over a single TCP connection, enabling two-way communication between client and server. The following is a sample code that uses PHP and WebSocket to implement real-time notification:

<?php
session_start();

// 引入WebSocket类
require('WebSocket.php');

class Chat extends WebSocket
{
    // 客户端连接成功时触发
    protected function onOpen($client_id)
    {
        $user_id = $_SESSION['user_id'];
        $username = $_SESSION['username'];

        echo "用户 $username 连接成功
";
    }

    // 客户端发送消息时触发
    protected function onMessage($client_id, $message)
    {
        $user_id = $_SESSION['user_id'];
        $username = $_SESSION['username'];

        echo "用户 $username 发送消息 $message
";

        // 处理消息
        // ...
    }

    // 客户端关闭连接时触发
    protected function onClose($client_id)
    {
        $user_id = $_SESSION['user_id'];
        $username = $_SESSION['username'];

        echo "用户 $username 断开连接
";
    }
}

// 实例化Chat类并启动WebSocket服务器
$chat = new Chat();
$chat->start();
?>

In actual use, you can save the above code as a PHP file and use the command php -q chat.php to start the WebSocket server.

Summary

This article introduces how to use PHP to implement multi-user session management and real-time notification functions. By establishing user tables and verifying login information, the function of multi-user session management is realized; by using WebSocket technology, the function of real-time notification is realized. Readers can modify and expand the code accordingly according to actual needs to adapt to the needs of their own real-time chat system.

The above is the detailed content of Multi-user session management and real-time notifications for PHP live chat system. 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