To implement PHP single-user login restrictions, specific code examples are required
When developing a website or application, sometimes it is necessary to ensure that users can only log in on one device , to avoid the situation of multiple people sharing accounts. In order to implement this function, you can write code through PHP to limit single-user login. The specific implementation methods and code examples will be introduced below:
First, we need to save the user's login information in the database. You can create a table named user_sessions
to store user session information. The table structure can be designed as follows:
CREATE TABLE user_sessions ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, session_id VARCHAR(255) NOT NULL, login_time TIMESTAMP NOT NULL );
Next, we can write PHP code to implement the single-user login restriction function. The specific steps are as follows:
user_sessions
table; user_sessions
The corresponding record in the table. The following is a simple PHP code example:
<?php session_start(); // 连接数据库 $dsn = 'mysql:host=localhost;dbname=your_database'; $username = 'your_username'; $password = 'your_password'; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ); try { $dbh = new PDO($dsn, $username, $password, $options); } catch (PDOException $e) { echo '数据库连接失败: ' . $e->getMessage(); exit(); } // 用户登录 function login($user_id) { $session_id = session_id(); $login_time = date('Y-m-d H:i:s'); $stmt = $dbh->prepare('INSERT INTO user_sessions (user_id, session_id, login_time) VALUES (?, ?, ?)'); $stmt->execute([$user_id, $session_id, $login_time]); } // 检查用户登录状态 function check_login($user_id) { $session_id = session_id(); $stmt = $dbh->prepare('SELECT * FROM user_sessions WHERE user_id = ? ORDER BY login_time DESC LIMIT 1'); $stmt->execute([$user_id]); $row = $stmt->fetch(); if ($row['session_id'] != $session_id) { header('Location: login.php'); // 跳转至登录页面 exit(); } } // 用户注销 function logout($user_id) { $stmt = $dbh->prepare('DELETE FROM user_sessions WHERE user_id = ?'); $stmt->execute([$user_id]); } // 使用示例 $user_id = 1; if (isset($_SESSION['user_id'])) { check_login($_SESSION['user_id']); } else { login($user_id); } // 其他操作 // ... // 用户注销 // logout($user_id); ?>
The above code is a simple example and can be modified and improved according to needs in actual projects. This implements basic single-user login restriction functionality, ensuring that users can only log in on one device. Hope the above content will be helpful to you.
The above is the detailed content of Implement PHP single user login restriction. For more information, please follow other related articles on the PHP Chinese website!