PHP

[PHP] 동시에 한 PC 에서만 로그인을 제한하는 방법


[PHP] 동시에 한 PC 에서만 로그인을 제한하는 방법




최초 작성일 : 2023-07-07 | 수정일 : 2023-07-07 | 조회수 : 718

PHP 세션을 이용해 한 PC에서만 로그인이 되도록 하는 방법은 여러가지가 있습니다. 간단하게는 클라이언트의 IP 주소를 세션에 저장하고 이를 사용자가 로그인할 때마다 확인하는 방법이 있습니다. 그러나 이 방법은 네트워크 변경, VPN 사용 등의 이유로 IP 주소가 변경될 수 있어 완벽하지 않습니다.

더 안정적인 방법은 로그인할 때마다 사용자의 세션 ID를 변경하고, 이를 데이터베이스에 저장하는 방법입니다. 그런 다음, 사용자가 페이지를 방문할 때마다 세션 ID를 확인합니다. 만약 세션 ID가 데이터베이스에 저장된 ID와 일치하지 않으면, 그것은 또 다른 PC에서 로그인이 시도되었음을 의미합니다. 이 때, 이전 세션을 무효화하고 새로운 세션을 시작할 수 있습니다.

아래는 이에 대한 대략적인 코드입니다:

php
<?php

session_start();

// DB에 연결

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// 사용자를 검증하는 당신의 로그인 스크립트가 있다고 가정

if (authenticate_user($username, $password)) {
    // 사용자가 인증되면 새로운 세션 ID를 생성하고 저장
    session_regenerate_id();
    $_SESSION['username'] = $username;

    // 사용자의 세션 ID를 DB에 저장

    $stmt = $db->prepare("UPDATE users SET session_id = ? WHERE username = ?");
    $stmt->execute([session_id(), $username]);
  }

// 사용자가 페이지를 방문할 때마다 세션 ID를 확인

else {
   $stmt = $db->prepare("SELECT session_id FROM users WHERE username = ?");
   $stmt->execute([$_SESSION['username']]);
   $result = $stmt->fetch();

   if
(session_id() != $result['session_id']) {
       // 다른 PC에서 로그인이 감지되면 현재 세션을 무효화
       session_unset();
       session_destroy();

       // 로그인 페이지로 리다이렉트

       header("Location: /login.php");
       exit;
   }
}

?>

이 코드는 암호가 이미 검증되었고, 세션 시작 부분과 검증 부분이 적절히 배치되었다는 가정 하에 작성된 것입니다. 실제로 이 코드를 사용하려면 자신의 애플리케이션에 맞게 수정해야 합니다.

Tags  #php  

닉네임:
댓글내용:
🎖️ 'PHP' 카테고리의 다른 인기글
🚀 추천글
새글

애플컴퓨터 신제품, 2025년 출시될 최신 정보 총정리!
2025-08-23
  • 애플컴퓨터
  • 애플 신제품
  • 2025년 출시
애플컴퓨터 신제품, 2025년 기대작 총정리!
2025-08-22
  • 애플컴퓨터
  • 2025년 신제품
  • 맥북 프로
애플컴퓨터 신제품, 2025년 최신 소식 총정리!
2025-08-21
  • 애플컴퓨터
  • 2025년 신제품
  • 아이폰 17
애플컴퓨터 최신 소식: M4 칩 성능 폭발! 🚀
2025-08-20
  • M4 칩
  • 애플 M4
  • 애플 신제품
애플컴퓨터 최신 M5 칩 성능 '깜짝'!
2025-08-20
  • 애플 M5 칩
  • M5 칩 성능
  • 애플 실리콘
추천글
카슈미르, 전쟁의 불씨: 국제적 긴장의 중심에서의 갈등 분석
2025-08-20
  • 카슈미르분쟁
  • 인도파키스탄
  • 카르길전쟁




📸 이미지 프롬프트 복사 완료!
이제 어떤 이미지 생성 도구로 이동하시겠어요?
🧠 ImageFX 🧪 Whisk