Home  >  Article  >  Backend Development  >  Implement PHP single user login restriction

Implement PHP single user login restriction

王林
王林Original
2024-03-05 22:27:031222browse

Implement PHP single user login restriction

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:

  1. Database design

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
);
  1. PHP code implementation

Next, we can write PHP code to implement the single-user login restriction function. The specific steps are as follows:

  • When a user logs in, a unique session ID is generated, and the session ID is saved together with the user ID in the user_sessions table;
  • Every time the user performs an operation, check whether the session ID corresponding to the user ID matches the current session ID. If it matches, the user is allowed to operate, otherwise it will jump to the login page;
  • When the user logs out, delete 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!

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