파일 세션일 때와 db 세션일 때, 모두 다 보완 했습니다.
파일 세션의 경우에는 g4_login을 이용하기 때문에 완벽차단은 안됩니다.
bbs/login_check.php
// 불당팩 - 중복로그인 방지
if ($config['cf_double_login'] && $mb_id) {
if ($config['cf_double_login'] && $mb_id) {
// db session을 사용하는 경우
// $use_db_session은 common.php에서 정의
if ($use_db_session) {
$sql = "select * from $g4[session_table] where mb_id = '$mb[mb_id]' and ss_ip != '$remote_addr' and ss_datetime > '$login_time' ";
$sql.= "order by ss_datetime desc limit 1";
$login_time = date("Y-m-d H:i:s", $g4[server_time] - 60*10); // 10분
$sql = " SELECT * from $g4[session_table]
WHERE mb_id = '$mb[mb_id]' and ip_addr != '$remote_addr' and ss_datetime > '$login_time' ";
// ip를 고려하지 않는 경우 (새창을 띄우거나 불여우와 ie를 함께 사용하면 중복 로그인 오류가 나옵니다)
//$sql = " SELECT * from $g4[session_table] where mb_id = '$mb[mb_id]' and ss_datetime > '$login_time' ";
$result = sql_query($sql);
if (mysql_num_rows($result) > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
// 파일세션을 사용하는 경우
else {
$result = sql_fetch(" select count(*) as cnt from $g4[login_table] where mb_id='$mb[mb_id]' and lo_ip <> '$_SERVER[REMOTE_ADDR]' ");
if ($result['cnt'] > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
}
// $use_db_session은 common.php에서 정의
if ($use_db_session) {
$sql = "select * from $g4[session_table] where mb_id = '$mb[mb_id]' and ss_ip != '$remote_addr' and ss_datetime > '$login_time' ";
$sql.= "order by ss_datetime desc limit 1";
$login_time = date("Y-m-d H:i:s", $g4[server_time] - 60*10); // 10분
$sql = " SELECT * from $g4[session_table]
WHERE mb_id = '$mb[mb_id]' and ip_addr != '$remote_addr' and ss_datetime > '$login_time' ";
// ip를 고려하지 않는 경우 (새창을 띄우거나 불여우와 ie를 함께 사용하면 중복 로그인 오류가 나옵니다)
//$sql = " SELECT * from $g4[session_table] where mb_id = '$mb[mb_id]' and ss_datetime > '$login_time' ";
$result = sql_query($sql);
if (mysql_num_rows($result) > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
// 파일세션을 사용하는 경우
else {
$result = sql_fetch(" select count(*) as cnt from $g4[login_table] where mb_id='$mb[mb_id]' and lo_ip <> '$_SERVER[REMOTE_ADDR]' ");
if ($result['cnt'] > 0) {
alert("다른 ip에서 이미 로그인되어 있습니다. 관리자에게 문의하시기 바랍니다.");
}
}
}
- opencode.co.kr -