Untuk melaksanakan sekatan log masuk pengguna tunggal PHP, contoh kod khusus diperlukan
Apabila membangunkan tapak web atau aplikasi, kadangkala perlu memastikan pengguna hanya boleh log masuk pada satu peranti untuk mengelakkan berbilang orang berkongsi akaun. Untuk melaksanakan fungsi ini, anda boleh menulis kod melalui PHP untuk mengehadkan log masuk pengguna tunggal. Kaedah pelaksanaan khusus dan contoh kod akan diperkenalkan di bawah:
Pertama, kami perlu menyimpan maklumat log masuk pengguna dalam pangkalan data. Anda boleh membuat jadual bernama user_sessions
untuk menyimpan maklumat sesi pengguna. Struktur jadual boleh direka bentuk seperti berikut: user_sessions
的表,用来存储用户的会话信息。表结构可以设计如下:
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 );
接下来,我们可以编写PHP代码来实现单用户登录限制功能。具体步骤如下:
user_sessions
表中;user_sessions
<?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); ?>
user_sessions
🎜🎜 Setiap kali pengguna melakukan operasi , semak sama ada ID sesi yang sepadan dengan ID pengguna sepadan dengan ID sesi semasa Jika ia sepadan, pengguna dibenarkan untuk beroperasi, jika tidak, ia melompat ke halaman log masuk 🎜🎜Apabila pengguna log keluar , padamkan rekod yang sepadan dalam jadual user_sessions
. 🎜🎜🎜Berikut ialah contoh kod PHP mudah: 🎜rrreee🎜Kod di atas adalah contoh mudah dan boleh diubah suai dan ditambah baik mengikut keperluan dalam projek sebenar. Ini melaksanakan fungsi sekatan log masuk pengguna tunggal asas, memastikan pengguna hanya boleh log masuk pada satu peranti. Semoga kandungan di atas dapat membantu anda. 🎜Atas ialah kandungan terperinci Laksanakan sekatan log masuk pengguna tunggal PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!