중복로그인 방지 코드(IP 상관없이 세션으로 대체) 정보
중복로그인 방지 코드(IP 상관없이 세션으로 대체)본문
중복로그인 초보자를 위한 팁입니다~
중복로그인 체크를 ip로 했을때 네트워크 변화가 있을때 끊기는 현상때문에 welcome 님의 글을 보고 만들어 봤습니다~
더 좋은 방법이 있으면 조언 부탁드립니다.
아래는 제가 만들어본 중복로그인 체크 방법입니다.
$g5['member_table'] 테이블에 'login_session' 필드 추가 여분 필드 추가하여 사용해도 무방합니다.
ALTER TABLE {$g5['member_table']} ADD login_session VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
-------------------- 헤더나 푸터에 삽입 ----------------------
<?
if($member['mb_id'] != "") {
?>
<script type="text/javascript">
<!--
var get_con_suer = function() {
$.ajax({
type: "POST",
url: "/bbs/ip_check.php",
dataType: "html",
success: function(responseText) {
if (responseText == 'login_fail') {
alert(' 로그인 후 이용해주세요.');
location.href = "/bbs/login.php";
}
if (responseText == 'ip_fail') {
alert('중복 로그인 되어 로그아웃 되었습니다.');
location.href = "/bbs/login.php?ipcheck=fail";
}
setTimeout("get_con_suer()", "7000");
},
error: function(responseText) {
return false;
}
});
};
get_con_suer();
//
-->
</script>
<?
}
?>
----------------- /bbs/ip_check.php 파일 생성 -----------------
<?php
include_once('./_common.php');
if($member['mb_id'] == "") {
$login_status = "login_fail";
echo $login_status;
exit;
}
// 어드민이면 패스
if($member['mb_id'] == "admin") {
$ip_status = "ip_Success";
echo $ip_status;
exit;
}
if(!empty($member['mb_id'])){
// 회원정보
$sql = " select login_session from {$g5['member_table']} where mb_id= '".$member['mb_id']."' ";
$mbl = sql_fetch($sql);
$login_session = $mbl['login_session'];
if(get_session('login_session') == $login_session) {
$ip_status = "ip_Success";
echo $ip_status;
exit;
}else{
$ip_status = "ip_fail";
session_unset(); // 모든 세션변수를 언레지스터 시켜줌
session_destroy(); // 세션해제함
echo $ip_status;
exit;
}
}
?>
------------------- /bbs/login_check.php 대략 80줄 삽입 ----------------------
// 중복체크 로그인 접속 정보 저장
$login_session = getloginsession(12);
set_session('login_session', $login_session); //렌던값을 세션에 저장
$sql= " update {$g5['member_table']} set login_session = '$login_session' where mb_id = '{$mb['mb_id']}' ";
sql_query($sql);
------------------- /lib/common.lib.php 하단에 삽입 ----------------------
function getloginsession($codeLength, $codeString=""){
$defaultString = "123456789";
srand((double)microtime()*1000000);
if ( $codeString == "" ){
$codeString = $defaultString;
}
$length = strlen($codeString);
for($i=0;$i<$codeLength;$i++)
{
$codeStr = rand(0,$length-1);
$resultStr .= substr( $codeString, $codeStr, 1 );
}
return $resultStr;
}
사용하시고자 하는 사이트에 입맛에 맞게 수정해서 사용하시면 될거 같습니다~
더운 날씨에 개발자님들 건강 유의하세요~^^
7
댓글 5개
감사합니다.