본문 바로가기
⚙️백엔드/PHP

PHP - IP 상관없이 세션 기반으로 로그인 중복 방지

by Janger 2023. 2. 18.
728x90
반응형

1. 사용자의 테이블에 session 컬럼을 추가한다. 

 

2. 사용자가 로그인에 성공하면 session_id()을 session에다 추가한다.  

$session_id = session_id();

$sql = "UPDATE members SET session = '$session_id' WHERE username = '$username'";

 

3. 헤더에서 매번 현재 사용자의 세션과 비교를 해서 만약 다르면 로그아웃 처리를 하게 한다.  

$session_id = session_id();
$sql_ = "SELECT * FROM members WHERE session = '$session_id' AND username = '$username'";
$result = mysqli_query($conn, $sql_);

if (mysqli_num_rows($result) > 0) {

} else {
    echo "<script>alert('로그인 중복을 감지 했습니다. 다시 로그인을 해주세요.')</script>";
    unset($_SESSION['username']);
    echo "<script>location.href='login.php'</script>";
    exit();
}

 

4. 처음 로그인 했던 사람은 자동으로 로그아웃이 되고 마지막으로 로그인한 사람은 아이디를 그대로 쓸 수 있다. 

 

 

출처: 

https://sir.kr/g5_tip/15002

 

IP 상관없이 중복로그인 막는 법 > SIR

제가 활용했던 방법입니다. <br/> <br/>로그인 할떄 랜덤으로 10자리 숫자를 생성합니다. <br/> <br/>사용자의 1번 필드같은곳에 10자리 숫자를 저장합니다. <br/> <br/>그리고 세션에도 랜덤 숫자를 쏘아

sir.kr

 

728x90
반응형