중복로그인 방지 정보
중복로그인 방지
본문
중복로그인 방지 방법좀 알려주세요 ㅠㅠ
댓글 전체
중복로그인이 있는 경우 이미 로그인 하고 있다는 것을 알려만 줍니다.
회원의 kick-off 처리 등은 다른 이슈를 만들 수 있기 때문에 하지 않습니다.
중복로그인팁은 배추님의 db 세션관리에만 유효한 것 입니다.
먼저 db 세션관리를 위한 $g4[session_table]에 ip_addr 필드를 추가 합니다.
ALTER TABLE `g4_session` ADD `ip_addr` VARCHAR( 255 ) NOT NULL ;
다음에 /lib/mw.session.db.lib.php의 쓰기 함수에서 ip를 기록하게 수정 합니다.
function _mw_session_write($id, $data)
{
global $connect_db, $g4;
$id = mysql_real_escape_string($id);
$ss_data = mysql_real_escape_string($data);
$ss_datetime = $g4[time_ymdhis];
// replace into = delete + insert 이므로 속도저하가 되므로 코드를 변경 합니다.
//$sql = "replace into $g4[session_table] values ('$id', '$ss_datetime', '$ss_data')";
//$qry = sql_query($sql);
$sql = "update $g4[session_table] set ss_datetime = '$ss_datetime', ss_data = '$ss_data' where id = '$id'";
$res = sql_query($sql);
if (mysql_modified_rows() ==0) {
$sql = " insert into $g4[session_table] set id='$id', ss_datetime = '$ss_datetime', ss_data = '$ss_data' ";
sql_query($sql, false); // 처음 로그인을 할 때 중복키 오류가 나온답니다. ㅠ..ㅠ...
}
return $qry;
}
아래 코드를 /bbs/login_check.php의 login_check.skin.php를 읽는 곳 위에 추가 합니다.
// 불당팩 - 중복로그인 방지
if ($config['cf_double_login'] && $mb_id) {
$sql = " SELECT * from $g4[session_table] where ss_data like '%:\"{$mb_id}\";%' and ip_addr != '$_SERVER[REMOTE_ADDR]' ";
// ip를 고려하지 않는 경우 (새창을 띄우거나 불여우와 ie를 함께 사용하면 중복 로그인 오류가 나옵니다)
//$sql = " SELECT * from $g4[session_table] where ss_data like '%:\"{$mb_id}\";%' ";
$result = sql_query($sql);
if (mysql_num_rows($result) > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
$config['cf_double_login']의 값 설정하는 것은 /adm/config_form.php와
config_form_update.php에 추가 합니다.
------------------- 아빠 불당님글 ㅋㅋ
회원의 kick-off 처리 등은 다른 이슈를 만들 수 있기 때문에 하지 않습니다.
중복로그인팁은 배추님의 db 세션관리에만 유효한 것 입니다.
먼저 db 세션관리를 위한 $g4[session_table]에 ip_addr 필드를 추가 합니다.
ALTER TABLE `g4_session` ADD `ip_addr` VARCHAR( 255 ) NOT NULL ;
다음에 /lib/mw.session.db.lib.php의 쓰기 함수에서 ip를 기록하게 수정 합니다.
function _mw_session_write($id, $data)
{
global $connect_db, $g4;
$id = mysql_real_escape_string($id);
$ss_data = mysql_real_escape_string($data);
$ss_datetime = $g4[time_ymdhis];
// replace into = delete + insert 이므로 속도저하가 되므로 코드를 변경 합니다.
//$sql = "replace into $g4[session_table] values ('$id', '$ss_datetime', '$ss_data')";
//$qry = sql_query($sql);
$sql = "update $g4[session_table] set ss_datetime = '$ss_datetime', ss_data = '$ss_data' where id = '$id'";
$res = sql_query($sql);
if (mysql_modified_rows() ==0) {
$sql = " insert into $g4[session_table] set id='$id', ss_datetime = '$ss_datetime', ss_data = '$ss_data' ";
sql_query($sql, false); // 처음 로그인을 할 때 중복키 오류가 나온답니다. ㅠ..ㅠ...
}
return $qry;
}
아래 코드를 /bbs/login_check.php의 login_check.skin.php를 읽는 곳 위에 추가 합니다.
// 불당팩 - 중복로그인 방지
if ($config['cf_double_login'] && $mb_id) {
$sql = " SELECT * from $g4[session_table] where ss_data like '%:\"{$mb_id}\";%' and ip_addr != '$_SERVER[REMOTE_ADDR]' ";
// ip를 고려하지 않는 경우 (새창을 띄우거나 불여우와 ie를 함께 사용하면 중복 로그인 오류가 나옵니다)
//$sql = " SELECT * from $g4[session_table] where ss_data like '%:\"{$mb_id}\";%' ";
$result = sql_query($sql);
if (mysql_num_rows($result) > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
$config['cf_double_login']의 값 설정하는 것은 /adm/config_form.php와
config_form_update.php에 추가 합니다.
------------------- 아빠 불당님글 ㅋㅋ
중복로그인 방지