묻고답하기

일반적으로 대화방들은 새창이 뜨면서 구현되는데
보통 그 대화창이 닫힐 때 로그아웃이 자동적으로 이루어집니다.(아래의 소스와 같이...)

문제는...!
대화방을 새창이 아닌 홈피의 메인 프레임으로 집어 넣었을때입니다.

예를 들면,
가령 대화를 하다가 메뉴의 방명록 게시판버튼을 누르면,
대화창이 방명록으로 로드되어지는데--------->이럴 경우엔 로그아웃이 이루어지지 않습니다.


/////////////////////////////////////<질문>/////////////////////////////////////////////
//   대화창이 다른 페이지로 로딩되어지더라도 로그아웃이 자동적으로 이루어지게 하고 싶습니다.
/////////////////////////////////////////////////////////////////////////////////////////

logout.php파일...

<?

//         대화방을 나가는 부분입니다...!!(로그아웃)

include "config.php";
echo"<head>
<meta http-equiv='Content-Type' content='text/html; charset=euc-kr'>
<link rel=StyleSheet HREF='../../style.css' type=text/css title=style>
<script Laguage='Javascript'>
function startTime(){
       var time= new Date();
       hours= time.getHours();
       mins= time.getMinutes();
       secs= time.getSeconds();
       closeTime=hours*3600+mins*60+secs;
       closeTime+=1.5;
       Timer();
}

function Timer(){
       var time= new Date();
       hours= time.getHours();
       mins= time.getMinutes();
       secs= time.getSeconds();
       curTime=hours*3600+mins*60+secs
       if (curTime>=closeTime){
               self.close();}
       else{
               window.setTimeout('Timer()',100)}
}
</script>
</head>";



// 창이 닫혔을때 그 바로 전화면상태가 채팅부분이었는지
// 검사하고 아니면, 로그아웃 처리를 안해준다...!!!

$arr=file("./member.txt");
for ($i=0;$i<count($arr);$i++)
{
        $temp=explode(":",$arr[$i]);
        $recname[$i]=trim($temp[0]);


        // 멤버화일에 자신의 이름이 없으면 채팅부분이 아닌(입장전...)
        // 곳에서 창을 닫았을 경우 이미 채팅중인 다른 사람들에게
        // 로그아웃메세지를 보이지 않게 한다...!
        if ($recname[$i]==$name) // 멤버화일에 자신의 이름이 있으면
        {
                $index=1;        // 인덱스를 1로준다...!(로그아웃처리함)
                break;           // if문을 빠져나간다.
        }
        else
        {
                $index=0;        // 기록이 없으면 0값으로 넣어줌!
        }
}




if($index==1) // 채팅부분에서 창을 닫았을 경우 로그아웃 처리한다.
{
        echo "<body onload=startTime();>";
        setlocale("LC_TIME","ko");
        $naljja=strftime("%A %H 시 %M 분");
        $fp=fopen("./write.txt","w");



        // 나갔다는 메세지를 저장합니다...!!
        if ($mode=="out")
        {
                $string="<center></font><font color=ff0099><b>【".$name."】</b><font color=0072bc>님이 $naljja</font> 에 퇴장하셨습니다.</font></center>n";
        }
        fwrite($fp,$string);
        fclose($fp);


        // 방장의 기록을 지닌 화일입니다...!!!
        $fas=fopen("admin.txt","r");
        $admin=trim(fgets($fas,100000));
        $admin=stripslashes($admin);
        fclose($fas);


        // 방을 나가는 사람의 이름을 지웁니다...!!
        $arr=file("./member.txt");
        for ($i=0;$i<count($arr);$i++)
        {
                $temp=explode(":",$arr[$i]);
                $recname[$i]=trim($temp[0]);
                $rectime[$i]=trim($temp[1]);

                if ($recname[$i]==$name)            
                {
                        if($admin==$recname[$i])  // 방을 나가는 사람이 방장이라면,!!!
                        {
                                $adminout="OK";
                        }
                        $recname[$i]="";
                }
        }




        // 나머지 사용자의 이름을 기록합니다...!!!
        $ff=fopen("./member.txt","w");
        for ($i=0;$i<count($arr);$i++)
        {
                if($recname[$i]!="")
                {
                        $string="$recname[$i]:$rectime[$i]n";
                        fwrite($ff,$string);

                        if($adminout=="OK")                  // 방장이 나갔을 경우 넘김..!!!
                        {
                                $abc=fopen("admin.txt","w"); //새로운 방장 이름을 저장합니다...!!!
                                fwrite($abc,$recname[$i]);
                                fclose($abc);

                                $fpq=fopen("./write.txt","w");// 새로운 방장을 입력창에 출력합니다...!!
                                $string="<center><font color=ff0099><b>【".$recname[$i]."】<font color=navy></b>님이 방장이 되셨습니다.</font></center>";
                                fwrite($fpq,$string);
                                fclose($fpq);

                                // 방정보도 같이 갱신합니다...!!!
                                $arra=file("./roominfo.txt");
                                for ($q=0;$q<count($arra);$q++)
                                {
                                        $tempp=explode(":",$arra[$q]);
                                        $rname=trim($tempp[0]);
                                        $rmessage=trim($tempp[1]);
                                        $bangjang=trim($tempp[2]);
                                        $pword=trim($tempp[3]);
                                        if($pword==""){$pword="없음";}
                                }
                                $fp2=fopen("roominfo.txt","w");
                                $all="$rname:$rmessage:$recname[$i]:$pword";
                                fwrite($fp2,$all);
                                fclose($fp2);
                                $adminout="NO";
                        }              
                }
        }
        fclose($ff);
} // 채팅부분에서 창을 닫았을 경우 로그아웃 처리하는 if문 닫힘 괄호!


echo "<center>감사합니다...즐거운 대화 ^^!<br><br>";
?>
글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
∠ 이건몇도게? 헤드셋 마이크 따로 설치를 해주어야 하나요? [1] 2007.08.10
아싸 노프레임홈페이지에서요 [1] 2007.08.10
홍지호 [질문] 제로보드에서 글쓰기 할때... [1] 2007.08.10
제로보드 질문인데엽.. [1] 2007.08.10
잡초 제로보드 정식 등록은..  
허지원 저기.. 웹분야는 아닌데. 질문좀. [1] 2007.08.10
래버린스 플래쉬때문에 제로보드가 버벅거린다면? [1] 2007.08.10
임민수 아.....저초보인데여..홈페이지...메인페이지에 로그인칭이어 어떻케하죵;; [10] 2007.08.10
새싹♡ 크롬리스창이.. 자꾸 전체화면으로 뜨는데요~ [2] 2007.08.10
홍바람 이미지 갤러리에서 조회수가 높은 이미지만 뽑는 방법좀 가르쳐 주세여...  
박고은 이게 롤오버? [4] 2007.08.10
임민수 외부로그인 포기함;;;;;; ㅜ_ㅜ 오늘 하루 종일 해도 안대네;;;;;;;ㅎㅎ 썩 즐겁으 하루는아니었다;; [2] 2007.08.10
박정호 코딩 질문이요... [6] 2007.08.10
박재중 홈페이지 만드는데"왕" 초보데여.... [2] 2007.08.10
김정민 클릭하면 창이 닫히게 하고 싶습니다.. 어떻게 하면 되나요.. [2] 2007.08.10
궁금한게마나 ★★고수님들 꼭좀 읽어주세여 제발!!~(php에대해서)★★ [2] 2007.08.10
김정민 팝업창에 닫기 버튼을 만들고 싶은데요.. [2] 2007.08.10
taeho javacript 값을 html의 hidden 값으로 서버로 옮길수?? [1] 2007.08.10
허정 [질문] smhs라는 카운터 질문이요.(초보...^^) [1] 2007.08.10
이제갑 죄송합니다만... [3] 2007.08.10