PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


Web Programming >> PHP Programming
[목차]
제19장 대화방 만들기(MySQL)

    7. 세션을 이용한 대화방으로 수정

 

지금까지 쿠키를 이용한 대화방을 만들었다. 이번에는 세션을 이용하여 대화방을 운영할 수 있도록 수정해 보자.

 

1. 회원 인증 수정하기

세션을 사용하기 위해서는 회원 인증부터 수정해야 한다. 그리고, 앞에서 작업한, 쪽지함등 회원인증후 사용하는 프로그램들도 역시 아래와 같이 세션 사용방법으로 바꿔야 한다.

 

로그인 인증 처리 프로그램(login_process.html)

회원 인증에서 쿠기를 처리하는 부분이 login_process.html이다. 그러므로, 이 웹문서를 수정한다.

<?

########## 데이터베이스 서버에 연결한다. ##########

$dbconn = mysql_connect("localhost","php","php99") or die("DB서버 연결에 실패하였습니다!");

 

########## 작업 데이터베이스로 sample을 선택한다. ##########

$status = mysql_select_db("sample",$dbconn);

if(!$status) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

 

   echo("서버의 sample 데이터베이스연결에 실패하였습니다!<br>");

   echo("에러코드 $errNO : $errMSG<br>");

   exit;

}

 

if($id && $passwd) {

        if(!$id) {

        echo "

                <SCRIPT>

                alert('아이디를 입력하여 주세요.');

                history.go(-1);

                </SCRIPT>";

        exit;

        }

        else if(!$passwd) {

        echo "

                <SCRIPT>

                alert('비밀번호를 입력하여 주세요.');

                history.go(-1);

                </SCRIPT>";

        exit;

        }

        else {

        $query = "SELECT id,name,email,level FROM member WHERE id='$id' AND passwd='$passwd'";

        $result = mysql_query($query);

 

                if(!$result) {

                   $errNO = mysql_errno($dbconn);

                   $errMSG = mysql_error($dbconn);

 

                   echo("서버의 sample 데이터베이스연결에 실패하였습니다!<br>");

                   echo("에러코드 $errNO : $errMSG<br>");

                   exit;

                }

 

                $total_record = mysql_num_rows($result);

        if(!$total_record) {

                echo "

                                <SCRIPT>

                                alert('아이디 또는 암호 오류.');

                                history.go(-1);

                                </SCRIPT>";

                exit;

        }

                else {

                        $row = mysql_fetch_object($result);

 

                        session_start();

 

                        session_register("user_id");

                        session_register("user_name");

                        session_register("user_email");

                        session_register("user_level");

 

                        $user_id = $row->id;

                        $user_name = $row->name;

                        $user_email = $row->email;

                        $user_level = $row->level;

 

 

            echo "

                                <SCRIPT>

                                alert('로그인 성공.');

                                location.replace('home.html');

                                </SCRIPT>";

           exit;

 

                }

 

        }

}

?>

위와같이 쿠키설정 부분을 세션 설정으로 바꾼다.

그리고, 회원 인증이 필요한 웹문서의 처음 부분에 아래와 같이 추가한다.

 

파일명 : home.html

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>location.replace('login.html');</SCRIPT>";

        exit;

}

?>

<HTML>

<HEAD>

<TITLE> Lee Lab - Lecture </TITLE>

</HEAD>

 

<frameset rows="1*" cols="200, *" BORDER=1 framespacing=0 frameborder=1>

<frame name="leelab-menu" src="menu.html" scrolling="no" marginwidth="0" marginheight="0" noresize>

<frame name="leelab-detail" src="detail.html" scrolling="auto" marginwidth="0" marginheight="0" noresize>

</frameset>

</HTML>

 

파일명 : menu.html

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>location.replace('login.html');</SCRIPT>";

        exit;

}

?>

<HTML>

<HEAD>

<TITLE> 회원만이 볼 수 있는 화면 </TITLE>

</HEAD>

 

<BODY BGCOLOR="#EEEEEE">

<br>

<UL>

        <LI> <A HREF="passwd.html" target="leelab-detail">암호변경</A>

        <LI> <A HREF="change.html" target="leelab-detail">개인정보변경</A><br>

        <LI> <A HREF="admin/member/" target="leelab-detail">회원관리</A><br>

        <LI> <A HREF="message/" target="_blank">쪽지함</A>

        <LI> <A HREF="chat/room_list.html" target="_blank">대화방</A><br>

 

        <LI> <a href="logout.html" target="_top">종료</a>

</UL>

</BODY>

</HTML>

 

파일명 : detail.html

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>location.replace('login.html');</SCRIPT>";

        exit;

}

?>

<HTML>

<HEAD>

<TITLE> 로그인을 환영합니다. </TITLE>

</HEAD>

 

<BODY BGCOLOR="#EEEEEE">

<br>

<center>

<h1>로그인을 환영합니다. </h1>

</center>

</BODY>

</HTML>

 

 

파일명 : logout.html

<?

        session_start();

        $user_id = null;

        $HTTP_SESSION_VARS["user_id"] = null;

        $user_name = null;

        $HTTP_SESSION_VARS["user_name"] = null;

        $user_email = null;

        $HTTP_SESSION_VARS["user_email"] = null;

        $user_level = null;

        $HTTP_SESSION_VARS["user_level"] = null;

 

    echo ("<meta http-equiv='Refresh' content='0; URL=./login.html'>");

 ?>

 

그외 회원관리에서도 쿠키를 사용하였다. 위와 같이 추가해주자.

 

 

 

2. 대화방 수정하기

대화방에서도 위와 같이 추가해주어야 세션을 사용할 수 있다.

 

파일명 : dbconn.html

데이터베이스 연결부분을 따로 만든 파일입니다.

<?

########## 데이터베이스 서버에 연결한다. ##########

$dbconn = mysql_connect("localhost","php","php99") or die("DB서버 연결에 실패하였습니다!");

 

########## 작업 데이터베이스로 sample을 선택한다. ##########

$status = mysql_select_db("sample",$dbconn);

if(!$status) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

 

   echo("서버의 sample 데이터베이스연결에 실패하였습니다!<br>");

   echo("에러코드 $errNO : $errMSG<br>");

   exit;

}

?>

  

 

파일명 : user_function.html

사용자 정의함수를 따로 만든 파일입니다.

<?

 

function write($username, $room_uid, $message, $tomsg, $message_dir){

        global $fontsize, $fontcolor, $bold, $italic, $user_name;

 

     $lines = file("${message_dir}/${room_uid}.html");

 

     if(!strcmp($tomsg ,"all")) {

                 $to_ear = "Y";

     } else if($tomsg != "") {

                

         $query = "SELECT name,ear FROM member  WHERE id ='$tomsg' ";

 

         $result= mysql_query($query);

         if (!$result) {

             error("QUERY_ERROR");

             exit;

         }

 

         $total_record = mysql_num_rows($result);

         if($total_record) {

             $to_name = mysql_result($result,0,0);

             $to_ear = mysql_result($result,0,1);

         }

         else {

             $tomsg = "all";

             $to_ear = "Y";

         }

                

    }

    else {

         $tomsg = "";

         $to_ear = "N";

    }

 

    $total = count($lines);

    $start = $total - 20;

    if($start < 0) $start = 0;

    $end = $total;

 

    $signdate=time();

 

    if($to_ear == "Y") {

        if($bold == "Y") $message = "<b>$message</b>";

        if($italic == "Y") $message = "<i>$message</i>";

        $message = "<font size='${fontsize}' color='${fontcolor}'><b>${user_name}</b> : ${message}</font><br>";

        $newmessage = "$tomsg|$username|$signdate|$message|";

    }else {

        $message = "<font size='3' color='blue'><b>${to_name}</b> 님께서 귀속말을 거부하였습니다.</font><br>";

        $newmessage = "|$username|$signdate|$message|";

    }

 

    $fp=fopen ("${message_dir}/${room_uid}.html", "w");

 

    for ($i = $start; $i < $end; $i++)  {

        fwrite($fp, "$lines[$i]");

    }

 

    fwrite($fp, "$newmessage\n");

    fclose($fp);

 

}

 

function error($text) {

    echo "$text";

    exit;

 

}

 

?>

 

 

 

파일명 : room_list.html

대기실을 구현한 것으로 만들어진 대화방들이 나타납니다. 여기서, 방을 만들기와 방에 입실하기 부분으로 연결 할 수 있습니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>self.close();</SCRIPT>";

        exit;

}

?>

 

<center><h1>Lee LAB 대화방 </h1><center>

<hr width=80%>

<?

include("user_function.html");

include("dbconn.html");

 

$result= mysql_query ("select * from room ", $dbconn);

 

$Total = mysql_num_rows($result);

 

if (!$Total){

        echo ("<center><h1>아직 생성된 방이 없네요 </h1><center>");

}else{

        echo ("

<center>

<table width='52%' border='0' cellspacing='0' cellpadding='0'>

  <tr bgcolor='#000000'>

    <td height='26' width='90%'>

      <div align='center'><font color='#FFFFFF' size='2'>생성된 대화방 이름 </font></div>

    </td>

  </tr>

");

$counter = 0;

 

        while ($counter < $Total){

                $room_uid = mysql_result($result, $counter, "uid");

                $room = mysql_result($result, $counter, "room");

                echo ("

<tr>

    <td height='36' width='90%'><a href='room_in.html?room_uid=$room_uid&message=$message'>$room</td>

</tr>

");

                $counter = $counter +1;

        }

}

 

echo("

<center>

<FORM ACTION='room_create.html' METHOD='POST'>

    <table width='37%' border='1' cellspacing='0' cellpadding='0' height='86' bordercolor='#000000'>

    <tr bgcolor='#999999'>

    <td height='29'>

       <div align='center'><font color='#FFFFFF' size='2'>◈ 대화방 ◈</font></div>

    </td>

    </tr>

    <tr>

    <td>

       <div align='center'><font size='2'>대화방제목

       <input type=text name=room size=15>

       <input type=submit value='대화방만들기' name='submit'>

       </font> </div>

    </td>

    </tr>

    </table>

    <font size='2'>대화방제에 공백이 있으면 안됩니다. </font>

  </form>

</center>

");

?>

 

 

 

파일명 : room_create.html

대화방 만들기 기능을 구현한 부분입니다. 대화방을 만들고, 대화창으로 이동합니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>self.close();</SCRIPT>";

        exit;

}

 

if (!$room) {

        echo ("

                <script>

                window.alert ('대화방제목은?')

                history.go(-1)

                </script>

        ");

        exit;

}

 

$message_dir = "./data"; //message 디랙토리의 절대경로

 

include("user_function.html");

include("dbconn.html");

 

// 대화방이름이 중복될 수 없으므로 같은 대화방명이 있는가를 검색하는 부분입니다.

$result= mysql_query ("select * from room where room = '$room'", $dbconn);

$Total = mysql_num_rows($result);

 

if($Total) {

    echo ("

         <script>

            window.alert ('같은 대화방 제목이 있습니다.')

            history.go(-1)

         </script>

    ");

    exit;

}

 

// 대화방을 만드는 부분입니다.

$room_uid = time();

mysql_query("insert into room (uid,room) values($room_uid,'$room')", $dbconn);

 

// 대화방에 입실한 것을 저장하는 부분입니다. chat_list.html에서 검색할 때 사용할 수 있습니다.

$signdate = $room_uid -1;

mysql_query("insert into room_login (chat_id,room_uid,signdate) values('$user_id',$room_uid,$signdate)", $dbconn);

 

// 대화방에 입실할 때 메시지를 출력하기위한 부분입니다.

$tomsg = all;

$newmessage = "$tomsg|$user_id|$room_uid|<font size=2 color=red><B>$user_name</B>님께서 대화방을 만들었습니다.</font><br>|";

 

$fp=fopen ("$message_dir/${room_uid}.html", "w");

fwrite($fp, "$newmessage\n");

fclose($fp); 

// 대화창으로 이동하는 부분입니다.

echo ("

     <script>

         location.replace('room_login.html?room_uid=$room_uid');

     </script>

");

exit;

?>

 

 

 

 

 

 

파일명 : room_in.html

대화방 입실하기 기능을 구현한 부분입니다. room_login테이블에 레코드를 추가하고, 대화창으로 이동합니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>self.close();</SCRIPT>";

        exit;

}

 

$message_dir = "./data"; //message 디랙토리의 절대경로

 

include("user_function.html");

include("dbconn.html");

 

// 기존에 입실한 내용이 남아있는 가를 체크하는 부분입니다. 만약에 있다면, 바로 대화창으로 넘어갑니다.

$query = "select * from room_login where room_uid = '$room_uid' AND chat_id = '$user_id'";

//echo $query;

$result= mysql_query ($query, $dbconn);

$Total = mysql_num_rows($result);

if($Total) {

        echo ("

                 <script>

                         location.replace('room_login.html?room_uid=$room_uid');

                 </script>

        ");

    exit;

}

 

// room_login테이블에 추가합니다. 입실한 것을 체크하기위해 필요합니다.

$signdate = time();

mysql_query("insert into room_login (chat_id,room_uid,signdate) values('$user_id',$room_uid,$signdate)", $dbconn);

 

// 입실할 때 대화창에 메시지를 남기기위한 부분입니다.

$tomsg = all;

$message = "<font color=blue>님께서 대화방에 입실하였습니다.</font>";

write($user_id, $room_uid, $message, $tomsg,$message_dir);

 

// 대화창으로 이동합니다.

echo ("

     <script>

         location.replace('room_login.html?room_uid=$room_uid');

     </script>

");

 

?>

 

 

 

 

파일명 : room_login.html

대화창입니다. 대화내용을 출력해야하고, 대화방 입실자를 보야줘야하고, 대화내용을 입력해야합니다. 그러므로, 프레임기능을 이용하여, 화면을 분할해서 내용을 출력합니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>self.close();</SCRIPT>";

        exit;

}

 

echo ("

<html><head><title>LeeLAB's 대화방</title></head>

<frameset rows='0,55,*,60' frameborder='NO' border='0' framespacing='0'>

  <frame name='room_say' scrolling='NO' noresize src='room_say.html?room_uid=$room_uid'>

  <frame name='room_top' scrolling='NO' noresize src='room_top.html?room_uid=$room_uid'>

        <frameset cols='*,200' frameborder='NO' border='0' framespacing='0'>

          <frame name='msg_list' src='say.html?room_uid=$room_uid'>

          <frame name='chat_list' src='chat_list.html?room_uid=$room_uid' scrolling='NO' noresize >

        </frameset>

  <frame name='msg_input' scrolling='NO' noresize src='chat.html?room_uid=$room_uid'>

</frameset>

<noframes><body bgcolor='#FFFFFF'></body></noframes></html>

");

?>

 

 

 파일명 : say.html

대화내용을 출력되는 부분입니다. 기존하고 많이 바뀌었지요. 여기서는 대화내용을 처리하지 않고, 보여주기만합니다. 기존에 처리하는 부분은 room_say.html에서 처리합니다.

 

<style type="text/css">

<!--

table { font-size:10pt; }

//-->

</style>

<BODY BGCOLOR=#FFFFFF>

 

 

파일명 : room_say.html

대화내용을 출력하는 부분입니다. Reflash기능을 자바스크립트로 바꾸는 중요한 부분입니다. 이 파일이 추가되었고, 나머지는 수정형태로 되었있습니다.

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

//message 디랙토리의 절대경로

$message_dir = "./data";

 

// Database 연결

include "user_function.html";

include "dbconn.html";

 

// 마지막 메시지 출력시간을 받는다.

$query6 = "SELECT signdate FROM room_login WHERE chat_id='$user_id'";

        

$result6 = mysql_query($query6);

if (!$result6) {

   error("QUERY_ERROR");

   exit;

}

$rows6 = mysql_num_rows($result6);

if($rows6){

        $signdate = mysql_result($result6,0,0);

} else {

        $signdate = time();

}

 

// 대화내용 파일에서 읽어들입니다.

$lines = file("${message_dir}/${room_uid}.html");

 

$total = count($lines);

$start = $total - 20;

if($start < 0) $start = 0;

$end = $total;

?>

<SCRIPT LANGUAGE='JavaScript'>

<!--

//alert("<?echo "$room_uid";?>");

 

<?

for ($i = $start; $i < $end; $i++)  {

        $talk = $lines[$i];

        $lsat = split('\|', $talk);

        if($lsat[0] == "all"){

                $message = "$lsat[3]";

        }

        else if($lsat[0] == "") {

                if(!strcmp($lsat[1] , $user_id))        $message="$lsat[3]";

        }

        else{

                if($lsat[0] == $user_id) $message = "<font size=2 color=blue>☎귓속말 </font>$lsat[3]";

                elseif($lsat[1] == $user_id) $message = "<font size=2 color=blue>☏귓속말 </font>$lsat[3]";

        }

        if($lsat[2] > $signdate) {

?>

text = "<?echo("$message");?>"

parent.msg_list.document.write(text);

//alert(text);

 

<?

        }

}

$signdate = $lsat[2];

$query1 = "UPDATE room_login set signdate = $lsat[2] where chat_id='$user_id'";

//echo($query1);

$result1 = mysql_query($query1);

if (!$result1) {

   error("QUERY_ERROR");

   exit;

}

 

?>

text="<script>scroll(1,100000)<\/script>\n";

parent.msg_list.document.write(text);

//-->

</SCRIPT>

<SCRIPT LANGUAGE='JavaScript'>

<!--

function regenerate(){

if(navigator.appName=="Microsoft Internet Explorer") window.location.reload();

else if(navigator.appName=="Netscape")  window.location.href='room_say.html?room_uid=<?echo("$room_uid");?>';

}

 

function regenerate2(){

setTimeout("regenerate()",5000)

}

 

//-->

</SCRIPT>

 

<body onload="regenerate2()">

</body>

<?

exit;

?>

 

 

 

파일명 : chat.html

대화내용을 입력할 때 처리하는 부분입니다. 여기서는 방청소 기능까지 처리하였습니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

header("Content-type: text/html");

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>self.close();</SCRIPT>";

        exit;

}

 

include("user_function.html");

include("dbconn.html");

 

//message 디랙토리 절대경로

$message_dir = "./data";

 

if(!$fontcolor) $fontcolor = "black";

if(!$fontsize) $fontsize = "3";

if(!$bold) $bold = "N";

if(!$italic) $italic = "N";

 

if($room_uid == "") {

      error("대화명이 없습니다.");

}

 

print"

<HTML>

 <HEAD>

   <TITLE>대화방</TITLE>

   <style>

    a:link, a:visited, a:active { text-decoration:none; color:#003366; }

    A:hover{color:blue;}

    body, tr, td { font-size : 10pt;}

   </style>

 

 <SCRIPT LANGUAGE='JavaScript'>

 <!--

 function FocusOn() {

 document.form_submit.message.focus();

 return;

 }

 

function chat()

{

  form_submit.submit();

 

}

//방청소 처리부분입니다.

 function room_clean()

{

     parent.msg_list.document.location.href='say.html'

 

}

 

//-->

 </SCRIPT>

 

 </HEAD>

  <BODY bgcolor=#FFFFFF text=#000000 topmargin=5 onLoad=FocusOn()>

     <table  cellspacing=0 cellpadding=1 border=0>

      <tr>

        <form name='form_submit' action='chat.html' method='post'>

        <input name=room_uid type=hidden value='$room_uid'>

                <td align=\"left\">

&nbsp;&nbsp;&nbsp;&nbsp;";

 

$query = "SELECT uid,chat_id FROM room_login  WHERE room_uid =$room_uid ORDER BY uid DESC";

 

$result= mysql_query($query);

if (!$result) {

   error("QUERY_ERROR");

   exit;

}

 

$total_record = mysql_num_rows($result);

?>

                <select name="tomsg">

                <option value="all">모두에게</option>

<?

for($i = 0; $i < $total_record; $i++) {

   $my_uid = mysql_result($result,$i,0);   

   $my_chat_id = mysql_result($result,$i,1);

 

   if($user_id != $my_chat_id) {

           $query5 = "SELECT name FROM member WHERE id = '$my_chat_id'";

           $result5 = mysql_query($query5);

           if(!$result5) {

                  error("QUERY_ERROR");

                  exit;

           }

           $my_chat_name = mysql_result($result5,0,0);

?>

                <option value="<?echo("$my_chat_id");?>" <?if($my_chat_id == $tomsg) echo(" selected");?>><?echo("$my_chat_name");?></option>

<?

        }

}

print " </select>

           <input type=text name=message value='' size=45>

          </td>

        </tr>

                <tr>

                <td align=\"left\">

&nbsp;&nbsp;&nbsp;&nbsp;

                <INPUT TYPE=\"checkbox\" NAME=\"bold\" value='Y'";

                if(!strcmp($bold,"Y")) echo(" checked");

                print ">진하게

                &nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=\"checkbox\" NAME=\"italic\" value='Y'";

                if(!strcmp($italic,"Y")) echo(" checked");

                print ">기울림

                &nbsp;&nbsp;&nbsp;&nbsp;<select name=\"fontcolor\">

      <option  value=\"black\" ";

          if(!strcmp($fontcolor,"black")) echo(" selected");

          print ">black</option>

      <option  value=\"#004080\" ";

          if(!strcmp($fontcolor,"#004080")) echo(" selected");

          print ">dark blue</option>

          <option  value=\"#3232CD\"";

          if(!strcmp($fontcolor,"#3232CD")) echo(" selected");

          print ">medium blue</option>

          <option  value=\"purple\"";

          if(!strcmp($fontcolor,"purple")) echo(" selected");

          print ">purple</option>

          <option  value=\"green\"";

          if(!strcmp($fontcolor,"green")) echo(" selected");

          print ">green</option>

          <option  value=\"orange\"";

          if(!strcmp($fontcolor,"orange")) echo(" selected");

          print ">orange</option>

          <option  value=\"brown\"";

          if(!strcmp($fontcolor,"brown")) echo(" selected");

          print ">brown</option>

          <option  value=\"gray\"";

          if(!strcmp($fontcolor,"gray")) echo(" selected");

          print ">gray</option>

          <option  value=\"#007FFF\"";

          if(!strcmp($fontcolor,"#007FFF")) echo(" selected");

          print ">slate blue</option>

          <option  value=\"orchid\"";

          if(!strcmp($fontcolor,"orchid")) echo(" selected");

          print ">orchid</option>

          <option  value=\"fuchsia\"";

          if(!strcmp($fontcolor,"fuchsia")) echo(" selected");

          print ">magenta</option>

          <option  value=\"#FF7F00\"";

          if(!strcmp($fontcolor,"#FF7F00")) echo(" selected");

          print ">coral</option>

          <option  value=\"#9F5F9F\"";

          if(!strcmp($fontcolor,"#9F5F9F")) echo(" selected");

          print ">blue violet</option>

          <option  value=\"violet\"";

          if(!strcmp($fontcolor,"violet")) echo(" selected");

          print ">violet</option>

          <option  value=\"#FF6EC7\"";

          if(!strcmp($fontcolor,"#FF6EC7")) echo(" selected");

          print ">neon pink</option>

          <option  value=\"#D98719\"";

          if(!strcmp($fontcolor,"#D98719")) echo(" selected");

          print ">cooper</option>

          <option  value=\"#9932CD\"";

          if(!strcmp($fontcolor,"#9932CD")) echo(" selected");

          print ">dark orchid</option>

          <option  value=\"#7093DB\"";

          if(!strcmp($fontcolor,"#7093DB")) echo(" selected");

          print ">dark turquoise</option>

          <option  value=\"#8E236B\"";

          if(!strcmp($fontcolor,"#8E236B")) echo(" selected");

          print ">maroon</option>

          <option  value=\"mediumpurple\"";

          if(!strcmp($fontcolor,"mediumpurple")) echo(" selected");

          print ">medium orchid</option>

          <option  value=\"#4D4DFF\"";

          if(!strcmp($fontcolor,"#4D4DFF")) echo(" selected");

          print ">neon blue</option>

          <option  value=\"#EAADEA\"";

          if(!strcmp($fontcolor,"#EAADEA")) echo(" selected");

          print ">plum</option>

          <option  value=\"#8C1717\"";

          if(!strcmp($fontcolor,"#8C1717")) echo(" selected");

          print ">scarlet</option>

          <option  value=\"#238E68\"";

          if(!strcmp($fontcolor,"#238E68")) echo(" selected");

          print ">sea green</option>

          <option  value=\"#3299CC\"";

          if(!strcmp($fontcolor,"#3299CC")) echo(" selected");

          print ">sky blue</option>

          <option  value=\"#38B0DE\"";

          if(!strcmp($fontcolor,"#38B0DE")) echo(" selected");

          print ">summer sky</option>

          <option  value=\"#CC3229\"";

          if(!strcmp($fontcolor,"#CC3229")) echo(" selected");

          print ">violet red</option>

          <option  value=\"#32CD99\"";

          if(!strcmp($fontcolor,"#32CD99")) echo(" selected");

          print ">aquamarine</option>

          <option  value=\"cadetblue\"";

          if(!strcmp($fontcolor,"cadetblue")) echo(" selected");

          print ">cadetblue</option>

          <option  value=\"chocolate\"";

          if(!strcmp($fontcolor,"chocolate")) echo(" selected");

          print ">chocolate</option>

          <option  value=\"darkgoldenrod\"";

          if(!strcmp($fontcolor,"darkgoldenrod")) echo(" selected");

          print ">darkgoldenrod</option>

          <option  value=\"darkkhaki\"";

          if(!strcmp($fontcolor,"darkkhaki")) echo(" selected");

          print ">darkkhaki</option>

          <option  value=\"darkred\"";

          if(!strcmp($fontcolor,"darkred")) echo(" selected");

          print ">darkred</option>

          <option  value=\"darksalmon\"";

          if(!strcmp($fontcolor,"darksalmon")) echo(" selected");

          print ">darksalmon</option>

          <option  value=\"darkslateblue\"";

          if(!strcmp($fontcolor,"darkslateblue")) echo(" selected");

          print ">darkslateblue</option>

          <option  value=\"lightslategray\"";

          if(!strcmp($fontcolor,"lightslategray")) echo(" selected");

          print ">lightslategray</option>

          <option  value=\"salmon\"";

          if(!strcmp($fontcolor,"salmon")) echo(" selected");

          print ">salmon</option>

          <option  value=\"silver\"";

          if(!strcmp($fontcolor,"silver")) echo(" selected");

          print ">silver</option>

          <option  value=\"tan\"";

          if(!strcmp($fontcolor,"tan")) echo(" selected");

          print ">tan</option>

          <option  value=\"tomato\"";

          if(!strcmp($fontcolor,"tomato")) echo(" selected");

          print ">tomato</option>

          <option  value=\"turquoise\"";

          if(!strcmp($fontcolor,"turquoise")) echo(" selected");

          print ">turquoise</option>

          <option  value=\"#FF9696\"";

          if(!strcmp($fontcolor,"#FF9696")) echo(" selected");

          print ">난이옷</option>

          <option  value=\"#A537DC\"";

          if(!strcmp($fontcolor,"#A537DC")) echo(" selected");

          print ">보라색</option></select>

      &nbsp;&nbsp;&nbsp;&nbsp;<select name=\"fontsize\">

      <option  value=\"2\"";

          if(!strcmp($fontsize,"2")) echo(" selected");

          print ">작게</option>

          <option  value=\"3\"";

          if(!strcmp($fontsize,"3")) echo(" selected");

          print ">보통</option>

          <option  value=\"4\"";

          if(!strcmp($fontsize,"4")) echo(" selected");

          print ">크게</option>

          <option  value=\"5\"";

          if(!strcmp($fontsize,"5")) echo(" selected");

          print ">아주크게</option>

                </select>

          &nbsp;&nbsp;<a href=javascript:room_clean()>방청소</font>

     </td>

    </tr>

</form>

   </table>

        ";

 

if ($message) {

   write($user_id, $room_uid, $message, $tomsg,$message_dir);

   echo(" <SCRIPT LANGUAGE='JavaScript'>

    <!--

    top.room_say.document.location.href='room_say.html?room_uid=$room_uid'

    //-->

    </SCRIPT>");

}               

exit;

 

?>

</body></html>

 

 

파일명 : room_top.html

대화방의 로고가 출력되고, 메뉴도 나타납니다. 개인정보수정과 로그아웃을 할 수 있는 링크가 추가 되었습니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>window.close();</SCRIPT>";

        exit;

}

?>

<style type="text/css">

<!--

.main {  font-family: "굴림"; font-size: 10pt; color: black; line-height: 11pt}

.title {  font-family: "굴림"; font-size: 10pt; color: #000000; line-height: 11pt}

.title2 {  font-family: "굴림"; font-size: 10pt; color: #205000; line-height: 11pt}

table { font-size:10pt; }

a:link, a:visited, a:active { color: black; text-decoration : none; font-weight: none;}

A:hover { text-decoration: none; color: FF0161; font-weight: none;}

//-->

</style>

 

<script language="javascript">

<!--

         userinfo = null;

function user_info(url) {

     userinfo = window.open(url,"userinfo","width=350,height=243,menubar=no,scrollbars=auto,resizable=no,status=no");

     userinfo.focus();

}

 

-->

</script>

 

<body bgcolor="#EEEEEE">

<table width=600 align=left><tr><td align="left"><font size=3><b>LeeLAB 대화방</td><td align="right" height=40 valign="bottom">

<a class=main href="javascript:user_info('user_conf.html')">개인정보변경</a> |

<a class=main href="room_out.html?room_uid=<?echo("$room_uid");?>" target="_top">나가기</a>

</td></tr></table>

</body></html>

 

파일명 : chat_list.html

대화방에 입실한 사람의 목록을 보여주는 부분입니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if(!$user_id || !$user_name) {

        echo "<SCRIPT>top.close();</SCRIPT>";

        exit;

}

 

include("dbconn.html");

 

// 대화방의 이름을 구하는 부분입니다.

$result= mysql_query ("select room from room where uid='$room_uid' ", $dbconn);

$room_name = mysql_result($result,0,0);

 

// 전체 대화방의 입실자의 수를 구합니다. $Total 변수에 저장되겠지요

$result= mysql_query ("select * from room_login where room_uid='$room_uid' ", $dbconn);

$Total = mysql_num_rows($result);

 

// $Total이 0보다 크면, 즉, 입실자가 있으면, 목록을 보여줍니다.

if ($Total){

   // 대화방의 이름을 출력합니다.

    echo ("

    <center>

    <table width='150' border='0' cellspacing='0' cellpadding='0'>

    <tr bgcolor='#000000'>

    <td height='26' >

    <div align='center'><font color='#FFFFFF' size='2'><b>$room_name </b></font></div>

    </td>

    </tr>

    ");

    $counter = 0;

    // 대화방 입실자를 반복문을 이용하여 출력합니다.    

    while ($counter < $Total) {

        $chat_id = mysql_result($result, $counter, "chat_id");

        $result1= mysql_query ("select name from member where id='$chat_id' ", $dbconn);

      

        $chat_name = mysql_result($result1,0,0);

        echo ("

    <tr>

    <td height='26'>$chat_name</td>

    </tr>

        ");

        $counter = $counter +1;

    }

}

?>

</table>

<?

 

// 5초마다 리프레시기능을 이용하여 다시 읽어 보여줍니다.

echo("

<META HTTP-EQUIV='Refresh' CONTENT='5; url=chat_list.html?room_uid=$room_uid'>

");

exit;

?>

 

파일명 : user_conf.html

개인정보 수정하는 부분으로, 여기서는 귀속말의 거부기능만을 처리합니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

if($user_id == "" || $user_name == "") {

        echo ("         

        <SCRIPT LANGUAGE='JavaScript'>

        <!--

        top.close();

        //-->

        </SCRIPT>

                ");

    exit;

 

}

 

include("dbconn.html");

 

if($mode == "modify") {

        $query = "UPDATE member set ear='$ear' where id='$user_id'";

//echo("$query");

 

        $result = mysql_query($query);

        if (!$result) {

           error("QUERY_ERROR");

           exit;

        }

?>

</style>

<SCRIPT LANGUAGE="JavaScript">

<!-- HIDE FROM OTHER BROWSER

 

        window.close();

 

 

// STOP HIDING -->

</SCRIPT>

<?      exit;

}

 

$php_self=$PHP_SELF;

 

        $query = "SELECT ear FROM member WHERE id ='$user_id' ";

        

        $result = mysql_query($query);

        if (!$result) {

          error("QUERY_ERROR");

          exit;

        }

        $ear = mysql_result($result,0,0);

 

?>

<HTML>

<HEAD>

<TITLE>대화창 설정</TITLE>

 

</HEAD>

<BODY BGCOLOR=#FFFFFF oncontextmenu="return false">

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=2 width="330">

<tr>

    <td align=center>&nbsp;<font color=blue size=3>대화창 설정

        <hr></td>

</tr>

<form name="talk_form" method="post" action="<?echo("$php_self");?>">

<input name=mode type=hidden value='modify'>

<tr><td align=center>

        <table border="0" cellpadding="0" cellspacing="0" width="80%" >

    <tr>

                <td width="116" align="left" height=30><font size="2">귓속말 수신 설정</font></td>

            <td width="154" align="left"><font size="2"><input type="radio" name="ear" value="Y" <?if($ear == "Y") echo("checked");?>>수신

                        <input type="radio" name="ear" value="N" <?if($ear == "N") echo("checked");?>>거부</font></td>

        </tr>

          <tr>

             <td width="154" align="right" height=50><p><font size="2"><input type="submit" value="   변경하기   "></font></td>

             <td width="154" align="left"><p><font size="2"><input type="button" value="   취소   " onclick="self.close();"></font></td>

           </tr>   

       </table>

  </td>

  </tr>

</TABLE>

</BODY>

</HTML>

 

파일명 : room_out.html

대화방을 빠져나가는 부분으로, 대화방의 입실자가 없을 때는 대화방 자체를 삭제해야 합니다.

 

<?

session_start();

 

global $user_id;

global $user_name;

global $user_email;

global $user_level;

 

include "user_function.html";

include "dbconn.html";

 

//message 디랙토리 절대경로

$message_dir = "./data";

 

// 대화방을 나갈 때 메시지를 남기는 부분입니다.

$date = date( "l dS of F Y h:i:s A" );

$message = "님이 대화방을 나갔습니다.($date)";

$tomsg = "all";

write($user_id, $room_uid, $message, $tomsg, $message_dir);

 

// 입실 테이블에서 회원 아이디를 삭제합니다.

$query="delete from room_login where chat_id='$user_id' ";

$result= mysql_query($query, $dbconn);

 

// 대화방에 입실한 회원이 없으면 대화방을 삭제하는 부분

$result= mysql_query("select * from room_login where room_uid='$room_uid' ", $dbconn);

 

// 입실자의 수를 계산하는 부분으로 $Total변수에 입실자의 수가 저장됩니다.

$Total = mysql_num_rows($result);

 

if(!$Total) {

// 입실자가 없을 때는 대화방 자체를 삭제합니다.

      $query="delete from room where uid='$room_uid' ";

      $result= mysql_query($query, $dbconn);

 

// 대화내용을 저장하는 파일을 삭제합니다.

      unlink("${message_dir}/${room_uid}.html");

 

}

 

?>

<SCRIPT LANGUAGE="JavaScript">

<!-- HIDE FROM OTHER BROWSER

        window.location.href='room_list.html';

// STOP HIDING -->

</SCRIPT>

<?

exit;

?>

 

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.