현재 위치: > 최신 기사 목록> PHP 단일 사용자 로그인 제한 구현 방법 및 코드 예제

PHP 단일 사용자 로그인 제한 구현 방법 및 코드 예제

M66 2025-07-28

PHP 단일 사용자 로그인 제한 사항을 구현하십시오

웹 사이트 또는 애플리케이션을 개발하는 동안 여러 사람이 계정을 사용하지 않도록 사용자의 계정을 한 장치에만 로그인 할 수 있는지 확인해야합니다. 단일 사용자 로그인 제한을 구현하면 계정 보안을 보장 할뿐만 아니라 사용자 세션을 효과적으로 관리 할 수 있습니다. 이 기사는 특정 코드 예제를 결합하여 PHP 로이 기능을 완료하는 방법을 소개합니다.

데이터베이스 디자인

먼저 사용자 세션 정보를 저장하기위한 데이터 테이블을 설계해야합니다. 사용자 ID, 세션 ID 및 로그인 시간을 저장하기 위해 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 코드 단일 사용자 로그인 제한을 구현합니다

다음은 단일 사용자 로그인 제한을 구현하기위한 핵심 아이디어입니다.

  • 사용자가 로그인하면 고유 한 세션 ID가 생성되고 사용자 ID와 세션 ID는 user_sessions 테이블에 저장됩니다.
  • 사용자가 작동 할 때마다 현재 세션 ID가 데이터베이스에 저장된 것인지 확인하십시오. 일치하지 않으면 로그인 페이지로 점프합니다.
  • 사용자가 로그 아웃하면 해당 세션 레코드를 삭제하십시오.

샘플 PHP 코드는 다음과 같습니다.

 <?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) {
    global $dbh;
    $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) {
    global $dbh;
    $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) {
    global $dbh;
    $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);

?>

요약

위의 데이터베이스 디자인 및 PHP 코드 예제를 통해 개발자는 기본 단일 사용자 로그인 제한 기능을 구현하여 사용자 계정을 동시에 한 장치에서만 사용할 수 있도록 할 수 있습니다. 프로젝트의 실제 요구에 따라 관련 논리를 더욱 확장하고 개선 할 수 있습니다.