그누보드의 자동로그인은 세션 보관 시간과는 관련이 없는 것으로 알고 있습니다.
자동로그인 시, 각 사용자의 접속기기에 쿠기(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최적화, 정리프로그램) 자동실행된다며 풀릴수 있습니다.
웹스토리지
'PHP 프로그래밍' 카테고리의 다른 글
공휴일 확인하기 : 공공데이터포털 API 예제 (0) | 2018.01.10 |
---|---|
euc-kr에서 독일어 (0) | 2018.01.08 |
[그누보드] 외부로그인 핸드폰인증 (0) | 2017.12.29 |
구글 지도 이용한 거리 계산 (0) | 2017.12.29 |
php include 된 파일 파악 (0) | 2017.12.29 |