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!