여러 개의 컴퓨터 서버에서 한 아이디를 이용하여 무한대로 로그인을 할수 있습니다.
하지만 이 팁을 적용하면 로그인을 한 번밖에 못하며 로그아웃하지 않고 익스플로러창을 강제로 닫아버리면 60초(1분)동안 로그인이 불가능하게 합니다
이 원리는 새로고침형식이며, 동시 접속자 데이터베이스가 많을 경우 서버에 무리가 생길 수 있을 염려가 있습니다

우선 작동원리에 대하여 설명하도록 하겠습니다 로그인이 되어있는지 안되어있는지 use_log.php 이 판단합니다
30초마다 새로고침 될 때마다 시간을 계속 저장시켜서 회원이 최근 로그인한 시간을 판단하여 그 시간이 더이상 저장이 안될때
60초후에 다시 로그인이 가능하게 복구시킵니다. 즉 이런 상황은 로그인 상태에서 익스플로러창을 강제로 닫았을 때를 의미합니다
하지만 로그아웃을 이용하여 로그인을 풀게 되면 로그인이 바로 가능하게 됩니다


생성할 데이터베이스 테이블 : zetyx_member_table
log_ok int(11)
use_log varchar(11)


수정할 파일들..
bbs/outlogin_skin/스킨디텍토리/login.html
bbs/outlogin_skin/스킨디텍토리/logged.html
bbs/login_check.php
bbs/logout.php


아래 소스를 use_log.php 라는 파일명으로 bbs/ 에 넣으세요..
<?
        include "lib.php";

// DB 연결
        if(!$connect) $connect=dbConn();

// 멤버 정보 구해오기
        $member=member_info();

        $result = mysql_query("select * from $member_table") or error(mysql_error());
        $member_data = mysql_fetch_array($result);

  // 로그인 상태일때 시간 유지
  if($member[no]) {
  $t = time();
  $result = mysql_query("update $member_table set use_log = 'Y' where user_id='$member[user_id]'");
  $result = mysql_query("update $member_table set log_ok = '$t' where user_id='$member[user_id]'");
  }

  // 오류 방지로 한번 더 확인하여 로그인 가능하게 만듬
  if(!$member[no]) {
  $t = time()-$member_data[log_ok]>60;
  $result = mysql_query("update $member_table set use_log = 'N' where $t");
  $result = mysql_query("update $member_table set log_ok = '' where $t");
  }
?>
<script language='javascript'>
window.setTimeout('window.location.reload()',30000);
</script>

30초마다 새로고침 하므로써 로그인이 되어있으면 시간을 계속 유지하게 됩니다.
그러나 30초후에 로그인이 안되어있으면서 60초보다 넘어버리면.. 즉 로그인이 되어있는 상태에서 강제로 익스플로러를 닫았을때 로그인이 가능하게 하도록 만듬


그리고 bbs/outlogin_skin/ 에 들어있는 스킨 디텍토리에 login.html, logged.html 파일을 엽니다.
가장 적당한 위치에.. 아무곳이나 다음 소스를 추가합니다..

<iframe src=../bbs/use_log.php width=0 height=0></iframe>



※ 프레임 홈페이지의 경우 오동작이 일어날수 있으니 위 소스를 홈페이지에 넣어주세요..
경로 변경은 꼭 해주시고 잊지 마세요 !


bbs/login_check.php 파일을 엽니다.

< 수정전 >
// 회원 로그인 체크
        $result = mysql_query("select * from $member_table where user_id='$user_id' and password=password('$password')") or error(mysql_error());
        $member_data = mysql_fetch_array($result);

// 회원로그인이 성공하였을 경우 세션을 생성하고 페이지를 이동함

< 수정후 >
// 회원 로그인 체크
        $result = mysql_query("select * from $member_table where user_id='$user_id' and password=password('$password')") or error(mysql_error());
        $member_data = mysql_fetch_array($result);

// 로그인이 이미 된 아이디일때 에러 표시;;
  if($member_data[use_log]=='Y'){
  echo"<script>alert('현재 로그인중이라 접속을 하실 수 없답니다.');history.back();</script>";exit;}

// 로그인 중복 방지를 위해 접속된 상태로 표시함
  $result = mysql_query("update $member_table set use_log = 'Y' where user_id = '$member[user_id]'");

// 로그인 시간을 체크하여 검사
  $t = time();
  $result = mysql_query("update $member_table set log_ok = '$t' where user_id = '$member[user_id]'");
// 회원로그인이 성공하였을 경우 세션을 생성하고 페이지를 이동함


이것은 회원이 로그인 했을때 접속된 상태로 표시하여 만약 로그인이 되어있으면 불가능하게 만듭니다.
그러나 로그인 상태에서 강제로 익스플로러를 닫게 되면 60초간 로그인이 불가능합니다.
60초 후에 로그인 상태가 가능합니다.


bbs/logout.php 파일을 엽니다.

        if(!$member[no]) Error("로그인 상태가 아닙니다");

이 소스 바로 밑에 아래 소스를 넣으세요..

// 로그인 상태를 접속이 안된걸로 표시함(로그아웃시 다시 로그인할 경우를 위해)
  $result = mysql_query("update $member_table set use_log = 'N' where user_id = '$member[user_id]'");
  $result = mysql_query("update $member_table set log_ok = '' where user_id = '$member[user_id]'");



이렇게 수정해주세요..^^;
로그아웃했을때 바로 로그인을 할수 있도록 만들어주면 됩니다




궁금하신 점이나, 안되는거 있으면 제 홈페이지에 글 남겨주세요...


http://webstudy.joa1004.com 로도 놀러와주셔요