PHP 프로그래밍

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


Web Programming >> PHP Programming
[목차]
제30장 화상영어 LMS 프로그래밍 실습

    1. 회원 인증 및 회원 관리 프로그램

1. MySQL DB 설계

가. MySQL 계정 생성


root / apmsetup 로그인 한다.



위와 같이 입력하고 선택한다. 만들기를 클릭한다.


mysql DB를 선택한다.


INSERT INTO  `mysql`.`user` (`Host` ,`User` ,`Password` ) VALUES ( 'localhost',  'php',  password('php123'));


INSERT INTO  `mysql`.`db` (`Host` ,`Db` ,`User` ,`Select_priv` ,`Insert_priv` ,`Update_priv` ,
`Delete_priv` , `Create_priv` ,`Drop_priv` ,`Grant_priv` ,`References_priv` ,`Index_priv` ,`Alter_priv` ,
`Create_tmp_table_priv` ,`Lock_tables_priv` ,`Create_view_priv` ,
`Show_view_priv` ,`Create_routine_priv` ,`Alter_routine_priv` ,`Execute_priv`)

VALUES ('localhost',  'sample_db',  'php',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y',  'Y', 'Y',  'Y');


flush privileges;


위의 SQL 명령문을 아래 창에 붙여넣기 하여 실행한다.


나. 회원 테이블 만들기


create table member (

num    int(9) not null auto_increment,

name    varchar(15),

id         varchar(15),

passwd    varchar(30),

email        varchar(50),

level        int(1),

primary key(num))


INSERT INTO member (name,id,passwd,email,level)

VALUES ('관리자','admin','0000','master@leelab.co.kr', '2');


level은 해당 사용자가 운영자인지, 일반 사용자인지를 체크하기 위하여 만들어진 필드입니다. level필드를 적절히 사용하면, 유료 사용자와 무료 사용자 등을 구분할 수도 있습니다. 여기서는 일반사용자는 1이고, 관리자는 2의 level를 갖게 설정한다.


위에서는 관리자 아이디를 기본적으로 추가하는 SQL문이 있다. 이 관리자 아이디로, 회원관리를 하면 된다.


2. 처리 흐름도




- 회원가입(registerform.html, register.html, check_id.html)

- 로그인 화면, 인증처리 프로그램(login.html, login_process.html)

- 인증후 화면(index.html)

- 암호변경(passwd.html)

- 개인정보변경(change.html)

- 회원찾기(search.html)

- 관리자화면(/admin/)

- 회원관리(/admin/member/)


3. 회원 가입(registerform.html, register.html, check_id.html)

id를 입력하고, 아이디 중복 확인 버튼을 클릭하면, 중복 체크가 됩니다.

 

아이디 중복확인을 하고, 가입신청 버튼을 클릭하면, 아래와 같이 가입 확인 확인 화면이 나타난다.


가. DB connect 파일 (dbconn.html)

<?

session_start();


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

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

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

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

if(!$status) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

   echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">";


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

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

   exit;

mysql_query("set names euckr");

?>



나. 회원 가입 폼(member/registerform.html)

<HTML>

<HEAD>

<TITLE>LeeLAB - 회원 가입</TITLE>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<SCRIPT LANGUAGE='JavaScript'>

function form_submit()

{

        if(!document.registerform.name.value)

        {

                alert('이름을 입력하여 주세요.');

                document.registerform.name.focus();

        }

        else if(!document.registerform.id.value)

        {

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

                document.registerform.id.focus();

        }

        else if(!document.registerform.passwd.value)

        {

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

                document.registerform.passwd.focus();

        }

        else if(!document.registerform.passwd1.value)

        {

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

                document.registerform.passwd1.focus();

        }

        else if(document.registerform.passwd1.value != document.registerform.passwd.value)

        {

                alert('비밀번호 확인에 실패하였습니다. 다시 입력하여 주세요.');

                document.registerform.passwd.value = '';

                document.registerform.passwd1.value = '';

                document.registerform.passwd.focus();

        }

        else {

                document.registerform.submit();

        }

}


function idchk()

{

        if(!document.registerform.id.value)

        {

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

                document.registerform.id.focus();

        }

        else

        {

                tmp = 'check_id.html?id='+document.registerform.id.value;

                window.open(tmp,'IDCHK','width=300,height=150,scrollbars=no');

        }

}

</SCRIPT>

</HEAD>

<BODY>

<CENTER>

<FONT SIZE=6 FACE='Comic Sans MS'>[ 회원 가입 ]</FONT><BR>

<FORM METHOD=POST ACTION=register.html NAME=registerform>

<TABLE border cellpadding=3 cellspacing=0 bordercolor=#545F81 width=400>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER WIDTH=100 bgcolor=#B3BBCD><FONT SIZE=2>이 름</FONT></TD>

        <TD WIDTH=300><FONT SIZE=2><INPUT TYPE=TEXT NAME=name SIZE=15 MAXLENGTH=8></TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>아이디</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=TEXT NAME=id SIZE=15 MAXLENGTH=8>&nbsp;&nbsp;&nbsp;&nbsp;

                <INPUT TYPE=BUTTON VALUE='아이디 중복 확인' onclick='idchk();'></TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>비밀번호</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=PASSWORD NAME=passwd SIZE=15 MAXLENGTH=8></TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>비밀번호확인</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=PASSWORD NAME=passwd1 SIZE=15 MAXLENGTH=8></TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>E-Mail</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=TEXT NAME=email SIZE=40 MAXLENGTH=50></TD>

</TR>

</TABLE><br>

<TABLE WIDTH=400>

<TR>

        <TD ALIGN=CENTER><INPUT TYPE=BUTTON VALUE='가입신청' onclick='form_submit();'>&nbsp;&nbsp;<input type=button

value='뒤로가기' onclick='history.back()'></TD>

</TR>

</TABLE>

</FORM>


다. 아이디 중복 처리 프로그램(member/check_id.html)

<?

include "dbconn.html";

?>

<html>

<head>

   <title>Lee LAB - 아이디 중복 체크</title>

   <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

   <style type="text/css">

   <!--

   a:link,a:visited,a:active {

      text-decoration : none;

   }

   a:hover {

      text-decoration : underline;

      color : red;

   }

   TABLE, TD, TR, TH {

      font-size : 10pt;

   }

   //-->

   </style>

   <script language="javascript">

   <!--

   function replace_id() {

      opener.document.registerform.id.select();

      self.close();

   }

   //-->

   </script>

</head>

<body bgColor="lightyellow">

<?

$result = mysql_query("SELECT count(id) FROM member WHERE id = '$id'");

if (!$result) {

   echo("QUERY_ERROR");

   exit;

}

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

if ($rows || $rows1) {

?>

   <form>

   <table width="230" border="0" cellspacing="5" align="center">

   <tr>

      <td align="center">

      신청하신 아이디는 <br><font color="red">이미 등록</font>되어 있습니다! <p>

      <b>다른 아이디로 신청</b>하여 주십시오.

      </td>

   </tr>

   <tr>

      <td align="center">

      <font size=2>

      <input type="button" onClick="replace_id()" value="닫기">

      </font>

      </td>

   </tr>

   </table>

   </form>

<?

} else {

?>

   <form>

   <table width="230" border="0" cellspacing="5" align="center">

   <tr>

      <td align="center">

      신청하신 아이디는<br> 등록되어 있지 않으므로 <br><font color="red">사용가능</font>합니다.

      </td>

   </tr>

   <tr>

      <td align="center" align="center">

      <font size=2>

      <input type="button" onClick="self.close()" value="이 아이디로 신청합니다.">

      </font>

      </td>

   </tr>

   </table>

   </form>

<?

}

?>

</body>

</html>


라. 회원 가입 처리 프로그램(member/register.html)


<?

include "dbconn.html";


$name = $_POST['name'];

$id = $_POST['id'];

$passwd = $_POST['passwd'];

$email = $_POST['email'];


if($id && $name)

{

        $query = "SELECT * FROM member WHERE id='$id'";

        $result = mysql_query($query);

        if($row = mysql_fetch_row($result))

        {

                echo "<SCRIPT>alert('이미 사용중인 아이디 입니다.');history.go(-1);</SCRIPT>";

                exit;

        }


        $query = "INSERT INTO member (name,id,passwd,email,level) VALUES ('$name','$id','$passwd','$email','1')";

        mysql_query($query);


        echo "

<CENTER>

<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">


<FONT SIZE=6 FACE='Comic Sans MS'>[ 회원 가입 확인]</FONT><BR>

<TABLE border cellpadding=5 cellspacing=0 bordercolor=#545F81 width=400>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER WIDTH=100 bgcolor=#B3BBCD><FONT SIZE=2>이 름</FONT></TD>

        <TD WIDTH=300><FONT SIZE=2>$name</TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>아이디</FONT></TD>

        <TD><FONT SIZE=2>$id</TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>E-Mail</FONT></TD>

        <TD><FONT SIZE=2>$email</TD>

</TR>

</TABLE><br>

<TABLE WIDTH=400>

<TR>

        <TD ALIGN=CENTER><INPUT TYPE=BUTTON VALUE='확인' onclick='location=\"../login.html\";'></TD>

</TR>

</TABLE>";

}

?>


4. 로그인 인증 처리

 

 

 

가. 로그인 화면(login.html)

<HTML>

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<TITLE> LeeLAB 회원 인증 - 로그인 화면 </TITLE>

</HEAD>

 

<BODY BGCOLOR="#FFFFFF">

<CENTER>

<FONT SIZE=6 FACE='Comic Sans MS'>[ 회원 인증 ]</FONT><BR>

 

<FORM METHOD=POST ACTION=login_process.html NAME=loginform>

<TABLE border cellpadding=3 cellspacing=0 bordercolor=#545F81 width=400>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>아이디</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=TEXT NAME=id SIZE=15 MAXLENGTH=15></TD>

</TR>

<TR BGCOLOR=white>

        <TD ALIGN=CENTER bgcolor=#B3BBCD><FONT SIZE=2>비밀번호</FONT></TD>

        <TD><FONT SIZE=2><INPUT TYPE=PASSWORD NAME=passwd SIZE=15 MAXLENGTH=30></TD>

</TR>

 

</TABLE><br>

<TABLE WIDTH=400>

<TR>

        <TD ALIGN=CENTER><INPUT TYPE=submit VALUE='로그인' ></TD>

</TR>

</TABLE>

</FORM>

 

 <center><a href="member/registerform.html">무료회원가입</a></center>

 

</BODY>

</HTML>



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


<?

include "dbconn.html";


$id = $_POST['id'];

$passwd = $_POST['passwd'];


if($id && $passwd) {


        if(!$id) {

                echo "

                <SCRIPT>

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

                history.go(-1);

                </SCRIPT>";

                exit;


        } else if(!$passwd) {

                echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">";

                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 "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">";

                        echo "

                                <SCRIPT>

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

                                history.go(-1);

                                </SCRIPT>";

                        exit;

                } else {

                        $row = mysql_fetch_object($result);


                        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 "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">";

                        echo "

                                <SCRIPT>

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

                                top.location.replace('index.html');

                                </SCRIPT>";

                        exit;

                }

        }

}

?>

 


다. 로그아웃 프로그램(logout.html)


<?

include "dbconn.html";


$_SESSION["user_id"] = null;

$_SESSION["user_name"] = null;

$_SESSION["user_email"] = null;

$_SESSION["user_level"] = null;


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


?>


5. 메뉴화면 구성하기


가. 홈페이지(index.html)


파일명 : index.html

<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="home.html" scrolling="auto" marginwidth="0" marginheight="0" noresize>

</frameset>

</HTML>

 

나. 메뉴(menu.html)


<?

include "dbconn.html";

?>

<HTML>

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<TITLE> 메뉴 </TITLE>

</HEAD>

<BODY BGCOLOR="#EEEEEE">

<br>

<UL>

<?if($_SESSION['user_id']){?>

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

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

<?}else{?>

        <LI> <A HREF="login.html" target="leelab-home">로그인</A><br>

        <LI> <A HREF="member/registerform.html" target="leelab-home">회원가입</A><br>

<?}?>

                <LI> <A HREF="study/orderform.html" target="leelab-home">수강신청</A>

        <LI> <A HREF="study/studyroom.html" target="leelab-home">강의실</A>

<?if($_SESSION['user_id']){?>

        <LI> <a href="logout.html" target="_top">로그아웃</a>

<?     if($_SESSION['user_level'] == 2){?>

</UL>

<UL>

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

<?     }?>

<?}?>

</UL>

</BODY>

</HTML>

 

다. 메인화면(home.html)


파일명 : home.html

 

<HTML>

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<TITLE> 환영합니다. </TITLE>

</HEAD>

<BODY BGCOLOR="#EEEEEE">

<br>

<center>

<h1>환영합니다. </h1>

</center>

</BODY>

</HTML>


라. 상단화면(top.html)


<?

include "dbconn.html";

?>

<HTML>

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<TITLE> TOP </TITLE>

</HEAD>

<BODY BGCOLOR="#EEEEEE">

<br>

<center>

<TABLE border=0 width=100%>

<TR>

        <TD><h2>LeeLAB 화상영어</h2></TD>

        <TD>

<?if($_SESSION['user_id']){?>

<?echo $_SESSION['user_name'];?>님 께서 로그인 하였습니다.

<?     if($_SESSION['user_level'] == 2){?>

<A HREF="admin/">Admin</A>

<?     }?>

<?}?>

        </TD>

</TR>

</TABLE></center>

</BODY>

</HTML>



 

6. 회원관리 프로그램


가. 목록보기(admin/member/index.html)

<?

include "../../dbconn.html";


$user_id = $_SESSION['user_id'];

$user_name = $_SESSION['user_name'];

$user_level = $_SESSION['user_level'];


if(!$user_id || !$user_name || $user_level != "2") {

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

        exit;

}

 

########### 한 페이지당 출력할 게시물의 수

$num_per_page = 10;

 

########### 게시물 출력목록 하단에 링크를 걸 페이지의 개수

$page_per_block = 10;

 

########## 게시판 배경색(Background Color)

$BG_COLOR = "#EEEEEE";

 

########## 게시물 출력목록의 배경색 (Article List Color)

$LIST_TH_COLOR = "#BBBBBB";

$LIST_TD_COLOR = "#EEEEEE";

 

?>

<html>

<head>

   <title>회원관리</title>

   <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

<STYLE TYPE='text/css'>

<!--

A:link{text-decoration:none;color:}

A:visited{text-decoration:none;color:}

A:hover {background-color:dddddd}

-->

</STYLE>

</head>

 

<script language="javascript">

<!--

function profileWindow(ref) {

   var window_left = (screen.width-700)/2;

   var window_top = (screen.height-200)/2;  

   window.open(ref,"profileWin",'width=700,height=200,status=no,scrollbars=yes,top=' + window_top + ',left=' + window_left + '');

}

//-->

</script>

 

<body bgColor=<?echo("$BG_COLOR")?>>

<table width=600 align=center><tr><td align=center>

<?

 

if(!$page) {

   $page = 1;

}

 

echo("<p align=center><font size=2><b>◎◎◎ [회원관리 프로그램 - 관리자용] ◎◎◎</b></font></p>");

 

 

########## 전체게시물의 총 개수를 각각 구한다. ##########

if(!eregi("[^[:space:]]+",$key)) {

   $query = "SELECT count(num) FROM member";

   if(!strcmp($order,"name")) $query .= " ORDER BY name";

   else $query .= " ORDER BY num DESC";

} else {

   $encoded_key = urlencode($key);

   $query = "SELECT count(num) FROM member WHERE $keyfield LIKE '%$key%'";

   if(!strcmp($order,"name")) $query .= " ORDER BY name";

   else $query .= " ORDER BY num DESC";

}

$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_result($result,0,0);

 

########## 현재의 페이지에서 출력할 게시물의 범위를 결정한다. ##########

if(!$total_record) {

   $first = 1;

   $last = 0;  

} else {

   $first = $num_per_page*($page-1);

   $last = $num_per_page*$page;

 

   $IsNext = $total_record - $last;

   if($IsNext >0) {

      $last -= 1;

   } else {

      $last = $total_record - 1;

   }     

}

 

########## 전체 페이지수를 계산한다. ##########

$total_page = ceil($total_record/$num_per_page);

?>

 

<form name="signform" method="post" action="read.html?page=<?echo("$page")?>&keyfield=<?echo("$keyfield")?>&key=<?echo("$encoded_key")?>">

 

<table width="500" border="0" align="center" cellspacing="0" cellpadding="0">

<tr>

   <td width="105">&nbsp;</td>

   <td width="490" align="center">

   <font size="2">  

   

<?

if(!eregi("[^[:space:]]+",$key)) {

   echo("총 등록회원 : <b>$total_record</b> (Total <b>$total_record</b> 명)");  

} else {

   echo("검색된 등록회원 : <b>$total_record</b> (Total <b>$total_record</b> 명)");

   echo(" - <b>[BBS 관리자용]</b>");

?>

 

   </font>

   </td>

   <td width="105" align="right"><font size=2>( <font color="red"><? echo("$page") ?></font> / <font color="red"><? echo("$total_page") ?></font> )</font></td>

</tr>

</table>

                

<table border="0" width="500" bgcolor=black align="center" cellspacing="1" cellpadding="0">

<tr>

   <td height=20 align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=50><font size=2 color="#ffffff">번호</font></td>

   <td align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=100><font size=2 color="#ffffff">ID</font></td>

   <td align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=100><font size=2 color="#ffffff"><a href="index.html?<?echo("order=name&keyfield=$keyfield&key=$encoded_key");?>">이름</a></font></td>

   <td align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=100><font size=2 color="#ffffff">등급</font></td>

   <td align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=50><font size=2 color="#ffffff">수정</font></td>

   <td align="center" bgColor=<?echo("$LIST_TH_COLOR")?> width=50><font size=2 color="#ffffff">삭제</font></td>

</tr>

 

<?

$time_limit = 60*60*24*$notify_new_article;

 

########## 현재페이지의 범위내에 출력할 결과레코드세트를 얻는다. ##########

if(!eregi("[^[:space:]]+",$key)) {

   $query = "SELECT num,name,email,level,id FROM member ";

   if(!strcmp($order,"name")) $query .= " ORDER BY name";

   else $query .= " ORDER BY num DESC";

} else {

   $query = "SELECT num,name,email,level,id FROM member WHERE $keyfield LIKE '%$key%' ";

   if(!strcmp($order,"name")) $query .= " ORDER BY name";

   else $query .= " ORDER BY num DESC";

}

$result= mysql_query($query);

if(!$result) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

 

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

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

   exit;

 

########## 게시물의 가상번호(게시물의 개수에 따른 일련번호) ##########

$article_num = $total_record - $num_per_page*($page-1);

 

for($i = $first; $i <= $last; $i++) {

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

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

   $my_email = mysql_result($result,$i,2);

   $my_level = mysql_result($result,$i,3);

   $my_id = mysql_result($result,$i,4);

 

   echo("<tr>");  

   echo("   <td  height=20 bgColor=$LIST_TD_COLOR align=\"center\"><font size=2>$article_num</font></td>");

   echo("   <td bgColor=$LIST_TD_COLOR align=\"center\"><font size=2>$my_id</font></td>");

   

   ########## 회원 이름 및 이메일주소 ##########

   echo("   <td bgColor=$LIST_TD_COLOR align=\"center\"><font size=2><a href=\"javascript://\" onClick=\"profileWindow('viewmember.html?number=$my_num')\" onMouseOver=\"status='view this record'\" onMouseOut=\"status=''\">$my_name</a></font></td>");

   

   ########## 회원 등급 ##########

   if(!strcmp($my_level,"0")) {

      $level = "무료회원";

   } else if (!strcmp($my_level,"1")) {

      $level = "정상회원";

   } else if (!strcmp($my_level,"2")) {

      $level = "관리자";

   } else {

      $level = "-";

   }

   echo("   <td bgColor=$LIST_TD_COLOR align=\"center\"><font size=2>$level</font></td>");     

   

   echo("<td bgColor=$LIST_TD_COLOR align=\"center\"><font size=2><a href=\"modify.html?mode=form&page=$page&number=$my_num&order=$order&keyfield=$keyfield&key=$encoded_key\" >수정</a></font></td>");

   echo("<td bgColor=$LIST_TD_COLOR align=\"center\"><font size=2><a href=\"delete.html?mode=form&page=$page&number=$my_num&order=$order&keyfield=$keyfield&key=$encoded_key\" >삭제</a></font></td>");

   echo("</tr>");     

 

   $article_num--;

}

 

echo("</table>");

?>

 

<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

   <td align="center">

<?

########## 게시물 목록 하단의 각 페이지로 직접 이동할 수 있는 페이지링크에 대한 설정을 한다. ##########

$total_block = ceil($total_page/$page_per_block);

$block = ceil($page/$page_per_block);

 

$first_page = ($block-1)*$page_per_block;

$last_page = $block*$page_per_block;

 

if($total_block <= $block) {

   $last_page = $total_page;

}

 

########## 이전페이지블록에 대한 페이지 링크 ##########

if($block >1) {

   $my_page = $first_page;

   echo("<font size=2><a href=\"index.html?page=$my_page&order=$order&keyfield=$keyfield&key=$encoded_key\" onMouseOver=\"status='load previous $page_per_block pages';return true;\" onMouseOut=\"status=''\">[이전 ${page_per_block}개]</a></font>");

}

 

########## 현재의 페이지 블럭범위내에서 각 페이지로 바로 이동할 수 있는 하이퍼링크를 출력한다. ##########

for($direct_page = $first_page+1; $direct_page <= $last_page; $direct_page++) {

   if($page == $direct_page) {

      echo("<font size=2><b>[$direct_page]</b></font>");

   } else {

      echo("<font size=2><a href=\"index.html?page=$direct_page&order=$order&keyfield=$keyfield&key=$encoded_key\" onMouseOver=\"status='jump to page $direct_page';return true;\" onMouseOut=\"status=''\">[$direct_page]</a></font>");

   }

}

 

########## 다음페이지블록에 대한 페이지 링크 ##########

if($block <$total_block) {

   $my_page = $last_page+1;

   echo("<font size=2><a href=\"index.html?page=$my_page&order=$order&keyfield=$keyfield&key=$encoded_key\" onMouseOver=\"status='load next $page_per_block pages';return true;\" onMouseOut=\"status=''\">[다음 ${page_per_block}개]</a></font>");

}

?>  

   </td>

</tr>

</table>

 

<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

   <td align="left">  

   <a href="index.html"><font size=2>목록</font></a>

   </td>

   <td align="right">  

<!--

   <a href="/bbs/registration.html" onMouseOver="status='post a new article';return true;" onMouseOut="status=''"><img src="<?echo("$icon")?>/post.gif" width=35 height=35 border=0></a>

-->  

<?

########## 이전페이지가 존재할 경우 이전페이지로 가는 링크를 활성화시킨다. ##########

if ($page >1) {

   $page_num = $page - 1;

   echo("<a href=\"index.html?page=$page_num&order=$order&keyfield=$keyfield&key=$encoded_key\" ><font size=2>이전</a> | ");

} else {

   echo("<font size=2>이전 | ");

}

 

########## 게시물이 다음페이지에도 존재할 경우 다음페이지로 가는 링크를 활성화시킨다. ##########

if ($IsNext >0) {

   $page_num = $page + 1;  

   echo("<a href=\"index.html?page=$page_num&order=$order&keyfield=$keyfield&key=$encoded_key\"><font size=2>다음</a></td>");

} else {

   echo("<font size=2>다음</td>");

?>

 

</tr>

</table>

 

</form>

 

<center>

<form method="post" action="index.html?<?echo("order=$order");?>">

<font size=-1>

<select name="keyfield" size="1">

   <option value="name">이름</option>

   <option value="id">아이디(ID)</option>

   <option value="level">사용자등급</option>

</select>

</font>

<input type="text" size="20" maxlength="30" name="key">

<font size=2><input type="submit" value="검색"></font>

</form>

</center>

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

 

</body>

</html>

 

나. 세부사항 보기(admin/member/viewmember.html)

<?

include "../../dbconn.html";


$user_id = $_SESSION['user_id'];

$user_name = $_SESSION['user_name'];

$user_level = $_SESSION['user_level'];


if(!$user_id || !$user_name || $user_level != "2") {

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

        exit;

}



$number = $_GET['number'];

 

########## 선택한 회원의 회원정보를 조회한다. ##########

$query = "SELECT num,name,level,id FROM member WHERE num = '$number'";

$result = mysql_query($query);

if(!$result) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

 

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

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

   exit;

$row = mysql_fetch_object($result);

?>

 

<html>

<head>

   <title>BBS of LEELAB Education Center</title>

   <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

 

   <style type="text/css">

   <!--

   a:link,a:visited,a:active {

      text-decoration : none;

   }

   a:hover {

      text-decoration : underline;

      color : red;

   }

   TABLE, TD, TR, TH {

      font-size : 10pt;

   }

   //-->

   </style>

</head>

 

<body bgcolor="#EEEEEE">

 

<?

$TITLE_BG = "#EEEEEE";                  // 각 타이틀에 대한 배경색

$COLUMN_NAME = "#BBBBBB";               // 입력항목 이름에 대한 배경색

$COLUMN_VALUE = "#EEEEEE";              // 입력양식에 대한 배경색

?>

 

<table width="652" cellspacing="1" cellpadding="0" border="0" align="center">

<tr><td align="center" bgColor="#000000">

 

<table width="650" cellspacing="1" cellpadding="5" border="0" align="center">

 

<!------------------------- 필수 입력사항 --------------------------->

<tr>

   <td width="640" align="center" bgColor="<?echo("$TITLE_BG")?>" colspan=4><b><?echo("$row->name ( $row->id )")?></b>님의 회원정보입니다.</td>

</tr>

 

<!------------------------- 이름과 아이디(ID) --------------------------->

<tr>

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">한글이름</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>"><?echo("$row->name")?></td>

 

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">ID</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>"><?echo("$row->id")?></td>

</tr>

<!------------------------- 회원 등급 --------------------------->

<tr>

   <td bgColor="<?echo("$COLUMN_NAME")?>" align="center">사용자등급</td>

   <td bgColor="<?echo("$COLUMN_VALUE")?>" colspan="3">

<?

   if(!strcmp($row->level,"0")) {

      $level = "무료회원";

   } else if (!strcmp($row->level,"1")) {

      $level = "정상회원";

   } else if (!strcmp($row->level,"2")) {

      $level = "관리자";

   } else {

      $level = "-";

   }

   echo("$level");

?>  

   </td>

</tr>

</table>

 

</td></tr>

</table>

 


</BODY>

</HTML>

 

다. 수정하기(admin/member/modify.html)


<?

include "../../dbconn.html";


$user_id = $_SESSION['user_id'];

$user_name = $_SESSION['user_name'];

$user_level = $_SESSION['user_level'];


if(!$user_id || !$user_name || $user_level != "2") {

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

        exit;

}



$mode = $_GET['mode'];

$number = $_GET['number'];

 

########## 전달된 변수 $mode의 값이 "form"일 경우 수정양식을 출력한다. ##########

if(!strcmp($mode,"form")) {

 

   ########## 현재 로그인한 사용자의 데이터를 회원테이블에서 가져온다. ##########

   $query = "SELECT num,name,level,id  FROM member WHERE num = '$number'";

   $result = mysql_query($query);

        if(!$result) {

           $errNO = mysql_errno($dbconn);

           $errMSG = mysql_error($dbconn);

 

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

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

           exit;

        }

   $row = mysql_fetch_object($result);

   

?>

<html>

<head>

   <title>BBS of LEELAB Education Center</title>

   <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

 

   <style type="text/css">

   <!--

   a:link,a:visited,a:active {

      text-decoration : none;

   }

   a:hover {

      text-decoration : underline;

      color : red;

   }

   TABLE, TD, TR, TH {

      font-size : 10pt;

   }

   //-->

   </style>

 

   <script language="javascript">

   <!--

   function checkInput (form) {

     

      if(form.set_pw[0].checked) {

         if(!IsPW(form.passwd.name)) {

            alert("비밀번호는 4자 이상의 영문소문자나 숫자 또는 조합된 문자열이어야 합니다!");

            form.passwd.focus();

            form.passwd.select();

            return;

         }   

         if (form.passwd.value != form.repasswd.value) {

            alert("입력하신 비밀번호가 일치하지 않습니다.\n다시 확인하시고 입력하여 주십시오.");

            form.repasswd.focus();

            form.repasswd.select();

            return;

         }      

      }

      

      form.submit();

   }

   

   function IsNumber(formname) {

      var form = eval("document.signform." + formname);

 

      for(var i = 0; i <form.value.length; i++) {

         var chr = form.value.substr(i,1);

         if(chr <'0' || chr >'9') {           

            return false;

         }

      }

      return true;  

   }

 

   function IsPW(formname) {

      var form = eval("document.signform." + formname);

      

      if(form.value.length <4 ) {

         return false;

      }

      for(var i = 0; i <form.value.length; i++) {

         var chr = form.value.substr(i,1);        

         if((chr <'0' || chr >'9') &&(chr <'a' || chr >'z') &&(chr <'A' || chr >'Z')) {

            return false;

         }

      }

      return true;  

   }

   

   //-->

   </script>

</head>

 

<body bgcolor="#FFFFFF">

 

<?

$TITLE_BG = "#EEEEEE";                  // 각 타이틀에 대한 배경색

$COLUMN_NAME = "#BBBBBB";               // 입력항목 이름에 대한 배경색

$COLUMN_VALUE = "#EEEEEE";              // 입력양식에 대한 배경색

 

$php_self = basename($PHP_SELF);

?>

 

<form name="signform" method="POST" action="<?echo("$php_self")?>?mode=process&page=<?echo("$page")?>&number=<?echo("$number")?>&keyfield=<?echo("$keyfield")?>&key=<?echo("$key")?>">

 

<table width="652" cellspacing="1" cellpadding="0" border="0" align="center">

<tr><td align="center" bgColor="#000000">

 

<table width="650" cellspacing="1" cellpadding="5" border="0" align="center">

 

<!------------------------- 필수 입력사항 --------------------------->

<tr>

   <td width="640" align="center" bgColor="<?echo("$TITLE_BG")?>" colspan=4><?echo("<b>$row->name</b>")?>회원의 정보를 수정합니다.</td>

</tr>

 

<!------------------------- 이름과 아이디(ID) --------------------------->

<tr>

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">한글이름</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>"><input type="text" name="name" size="10" maxlength="12" value="<?echo("$row->name")?>"></td>

 

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">id</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>">

      <input type="text" name="id" size="10" maxlength="5" value='<?echo("$row->id")?>'>

   </td>

</tr>

 

<!------------------------- 회원 등급 --------------------------->

<tr>

   <td bgColor="<?echo("$COLUMN_NAME")?>" align="center">회원등급</td>

   <td width="505" bgColor="<?echo("$COLUMN_VALUE")?>" colspan="3">

<?  

   if(!strcmp($row->level,"0")) {

      echo("<input type=\"radio\" name=\"level\" value=\"0\" CHECKED>무료회원");

   } else {

      echo("<input type=\"radio\" name=\"level\" value=\"0\">무료회원");

   }  

   

   if(!strcmp($row->level,"1")) {

      echo("<input type=\"radio\" name=\"level\" value=\"1\" CHECKED>정상회원");

   } else {

      echo("<input type=\"radio\" name=\"level\" value=\"1\">정상회원");

   }

        

   if(!strcmp($row->level,"2")) {

      echo("<input type=\"radio\" name=\"level\" value=\"2\" CHECKED>관리자");

   } else {

      echo("<input type=\"radio\" name=\"level\" value=\"2\">관리자");

   }   

?>  

   </td>

</tr>

 

<!------------------------- 회원비밀번호 변경 --------------------------->

<tr>

   <td align="center" bgColor="<?echo("$TITLE_BG")?>" colspan=4><?echo("<b>$row->name</b>")?>회원의 비밀번호를 변경하시겠습니까?

   <input type="radio" name="set_pw" value="1">예

   <input type="radio" name="set_pw" value="0" CHECKED>아니요

   </td>

</tr>

 

<!------------------------- 새 비밀번호 --------------------------->

<tr>

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">새 비밀번호</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>">

      <input type="password" name="passwd" size="10" maxlength="30"> <font color="red">(최소 4자)</font>

   </td>

 

<!------------------------- 새 비밀번호 확인 --------------------------->

   <td width="140" align="center" bgColor="<?echo("$COLUMN_NAME")?>" align="center">새 비밀번호 확인</td>

   <td width="180" align="center" bgColor="<?echo("$COLUMN_VALUE")?>"><input type="password" name="repasswd" size="10" maxlength="30"></td>

</tr>

 

<!------------------------- 등록버튼  --------------------------->

<tr>

   <td align="center" colspan="4" bgColor="#FFFFFF">

   <font size=2>

      <input type="button" value="회원정보 수정" onClick="checkInput(this.form)">

      <input type="reset" value="다시 입력">

       <input type="hidden" name="order" value='<?echo("$order")?>'>     

 

   </font>

   </td>

</tr>

 

</table>

 

</td></tr>

</table><p>

 

</form>

 

<center>

<a href="./?page=<?echo("$page")?>&keyfield=<?echo("$keyfield")?>&key=<?echo("$key")?>" ><font size=2>목록</a>

</font>

</center>

</body>

</html>

<?

########## 전달된 변수 $mode의 값이 "process"일 경우 입력양식의 값으로 회원정보를 갱신한다. ##########

} else if(!strcmp($mode,"process")) {

 

   

   ########## 사용자가 입력양식에 입력한대로 회원정보를 갱신한다.##########

   if($set_pw) {

      $query  = "UPDATE member SET id='$id',name='$name',level = '$level', passwd = '$passwd' WHERE num = '$number'"; 

   } else {

      $query  = "UPDATE member SET id='$id',name='$name',level = '$level' WHERE num = '$number'"; 

   }

   $result = mysql_query($query);

        if(!$result) {

           $errNO = mysql_errno($dbconn);

           $errMSG = mysql_error($dbconn);

 

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

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

           exit;

        }

   

   ########## 회원목록 출력화면으로 이동한다. ##########

   $encoded_key = urlencode($key);

   echo("<meta http-equiv='Refresh' content='0; URL=index.html?page=$page&order=$order&keyfield=$keyfield&key=$encoded_key'>");     

 

########## 전달된 변수 $mode의 값이 "mode"나 "process"가 아닐 경우 스크립트의 실행을 종료한다. ##########  

} else {

   echo("UPDATE_MEMBER_INVALID_MODE");

   exit;

}

?>

 

 

라. 삭제하기(delete.html)

<?

include "../../dbconn.html";


$user_id = $_SESSION['user_id'];

$user_name = $_SESSION['user_name'];

$user_level = $_SESSION['user_level'];


if(!$user_id || !$user_name || $user_level != "2") {

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

        exit;

}



$mode = $_GET['mode'];

$number = $_GET['number'];

 

########## 전달된 변수 $mode의 값이 "form"일 경우 삭제확인화면을 출력한다. ##########

if(!strcmp($mode,"form")) {

 

   ########## 현재 로그인한 사용자의 데이터를 회원테이블에서 가져온다. ##########

   $query = "SELECT num,name,level,id FROM member WHERE num = '$number'";

   $result = mysql_query($query);

        if(!$result) {

           $errNO = mysql_errno($dbconn);

           $errMSG = mysql_error($dbconn);

 

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

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

           exit;

        }

   $row = mysql_fetch_object($result);

?>

<html>

<head>

   <title>BBS of LEELAB</title>

   <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">

 

   <style type="text/css">

   <!--

   a:link,a:visited,a:active {

      text-decoration : none;

   }

   a:hover {

      text-decoration : underline;

      color : red;

   }

   TABLE, TD, TR, TH {

      font-size : 10pt;

   }

   //-->

   </style>

</head>

 

<body bgcolor="#FFFFFF">

 

<?

$TITLE_BG = "#EEEEEE";                  // 각 타이틀에 대한 배경색

$COLUMN_NAME = "#BBBBBB";               // 입력항목 이름에 대한 배경색

$COLUMN_VALUE = "#EEEEEE";              // 입력양식에 대한 배경색

 

$php_self = basename($PHP_SELF);

?>

 

<form name="signform" method="POST" action="<?echo("$php_self")?>?mode=process&page=<?echo("$page")?>&number=<?echo("$number")?>&keyfield=<?echo("$keyfield")?>&key=<?echo("$key")?>">

 

<table width="652" cellspacing="1" cellpadding="0" border="0" align="center">

<tr><td align="center" bgColor="#000000">

 

<table width="650" cellspacing="1" cellpadding="5" border="0" align="center">

 

<!------------------------- 필수 입력사항 --------------------------->

<tr>

   <td width="640" align="center" bgColor="<?echo("$TITLE_BG")?>" colspan=4><?echo("<b>$row->name($row->id)</b>")?>회원을 데이터베이스에서 <font color=red>삭제합니다</font>.</td>

</tr>

 

<!------------------------- 이름과 아이디(ID) --------------------------->

<tr>

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">한글이름</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>"><?echo("$row->name")?></td>

 

   <td width="140" bgColor="<?echo("$COLUMN_NAME")?>" align="center">ID</td>

   <td width="180" bgColor="<?echo("$COLUMN_VALUE")?>"><?echo("$row->id")?></td>

</tr>

 

<tr>

   <td align="center" colspan="4" bgColor="#FFFFFF">

   <font size=2>

      <input type="submit" value='<?echo("$row->name")?>회원을 삭제합니다'>     

      <input type="hidden" name="order" value='<?echo("$order")?>'>     

   </font>

   </td>

</tr>

 

</table>

 

</td></tr>

</table><p>

 

</form>

 

<center>

<a href="./?page=<?echo("$page")?>&keyfield=<?echo("$keyfield")?>&key=<?echo("$key")?>" ><font size=2>목록</a>

</font>

</center>

 

</body>

</html>

<?

########## 전달된 변수 $mode의 값이 "process"일 경우 입력양식의 값으로 회원정보를 갱신한다. ##########

} else if(!strcmp($mode,"process")) {

 

   ########## 회원데이터를 데이터베이스에서 삭제한다. ##########     

   $result = mysql_query("DELETE FROM member WHERE num = '$number'");

        if(!$result) {

           $errNO = mysql_errno($dbconn);

           $errMSG = mysql_error($dbconn);

 

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

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

           exit;

        }

   

   ########## 회원목록 출력화면으로 이동한다. ##########

   $encoded_key = urlencode($key);

   echo("<meta http-equiv='Refresh' content='0; URL=index.html?page=$page&order=$order&keyfield=$keyfield&key=$encoded_key'>");     

 

########## 전달된 변수 $mode의 값이 "mode"나 "process"가 아닐 경우 스크립트의 실행을 종료한다. ##########  

} else {

   echo("UPDATE_MEMBER_INVALID_MODE");

   exit;

}

?>

[목차]

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

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

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