묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
대화방에서 ''로그아웃''에 관한 질문입니다...
2003.08.25 04:09
일반적으로 대화방들은 새창이 뜨면서 구현되는데
보통 그 대화창이 닫힐 때 로그아웃이 자동적으로 이루어집니다.(아래의 소스와 같이...)
문제는...!
대화방을 새창이 아닌 홈피의 메인 프레임으로 집어 넣었을때입니다.
예를 들면,
가령 대화를 하다가 메뉴의 방명록 게시판버튼을 누르면,
대화창이 방명록으로 로드되어지는데--------->이럴 경우엔 로그아웃이 이루어지지 않습니다.
/////////////////////////////////////<질문>/////////////////////////////////////////////
// 대화창이 다른 페이지로 로딩되어지더라도 로그아웃이 자동적으로 이루어지게 하고 싶습니다.
/////////////////////////////////////////////////////////////////////////////////////////
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>";
?>
보통 그 대화창이 닫힐 때 로그아웃이 자동적으로 이루어집니다.(아래의 소스와 같이...)
문제는...!
대화방을 새창이 아닌 홈피의 메인 프레임으로 집어 넣었을때입니다.
예를 들면,
가령 대화를 하다가 메뉴의 방명록 게시판버튼을 누르면,
대화창이 방명록으로 로드되어지는데--------->이럴 경우엔 로그아웃이 이루어지지 않습니다.
/////////////////////////////////////<질문>/////////////////////////////////////////////
// 대화창이 다른 페이지로 로딩되어지더라도 로그아웃이 자동적으로 이루어지게 하고 싶습니다.
/////////////////////////////////////////////////////////////////////////////////////////
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>";
?>
댓글 1
-
앳플군
2003.08.25 10:47
접속자 정보와 함께 마지막 반응 시각을 저장해서 지정시간 이상으로 반응 없으면 나가게 하시는것밖에는 순수 HTML+Javascript 대화방으로는 방법이 없습니다.