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. 처음 로그인 했던 사람은 자동으로 로그아웃이 되고 마지막으로 로그인한 사람은 아이디를 그대로 쓸 수 있다.
출처:
IP 상관없이 중복로그인 막는 법 > SIR
제가 활용했던 방법입니다. <br/> <br/>로그인 할떄 랜덤으로 10자리 숫자를 생성합니다. <br/> <br/>사용자의 1번 필드같은곳에 10자리 숫자를 저장합니다. <br/> <br/>그리고 세션에도 랜덤 숫자를 쏘아
sir.kr
728x90
'⚙️백엔드 > PHP' 카테고리의 다른 글
PHP - 온라인 코드 난독화 사이트(PHP Obfuscator) (0) | 2024.05.03 |
---|---|
php - CSRF 방지 (0) | 2023.04.05 |
PHP - shell_exec 함수 한글 경로 or 한글 인자가 깨지는 경우 (0) | 2023.02.18 |
PHP - shell_exec 함수로 파이썬 실행하고 한글이 안나오는 경우 (0) | 2023.02.18 |
PHP - 캡챠(Captcha) 구현 (0) | 2022.08.07 |