그누보드의 자동로그인은 세션 보관 시간과는 관련이 없는 것으로 알고 있습니다.

자동로그인 시, 각 사용자의 접속기기에 쿠기(ck_mb_id와 ck_auto)를 저장해두고, 재 접속할 때 저장된 쿠키가 있는지 확인하여 로그인 인증을 하는 방식이기 때문입니다.

이런 점을 고려해 볼 때, 자동로그인이 자주 풀리는 이유는 쿠키로 저장된 값이 재접속 시에 서버에서 원하는 값이 아니기 때문일 겁니다.

이렇게 쿠키로 저장된 값과 서버에서 원하는 쿠키 값이 서로 달라지는 이유는

쿠기값(ck_auto)의 일부인 접속자 ip($_SERVER['REMOTE_ADDR']) 때문인 것으로 생각됩니다.

특히 모바일 환경(와이파이 사용 등...)에서 클라이언트 ip가 고정되기 어렵고, 무선 공유기를 사용하는 PC에서도 클라이언트 ip가 자주 바뀔 수 있기 때문에 쿠키 값이 서로 일치할 가능성이 낮아집니다.

 

다음과 같이 $_SERVER['REMOTE_ADDR'] 변수를 삭제하고 시행해 보세요.

./bbs/login_check.php 파일의 58번째 줄에 보면 다음과 같은 키 설정이 있습니다.

1$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // 이부분을 아래와 같이 수정
2$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // $_SERVER['REMOTE_ADDR'] 변수 지움

 

그리고 common.php 파일의 367라인 부분도 수정

1$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // 이부분을 아래와 같이 수정
2$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // $_SERVER['REMOTE_ADDR'] 변수 지움




자동로그인은 완벽한게 아닙니다. 사용자의 접속 환경에 따라 다르기 때문에 자주 풀리게 될 수 있습니다.

 

쿠키삭제 프로그램 같은(PC최적화, 정리프로그램) 자동실행된다며 풀릴수 있습니다.



웹스토리지

http://www.w3schools.com/html/html5_webstorage.asp

+ Recent posts