Web Programming >> PHP Programming
|
[목차] |
제16장 회원 인증 프로그램(MySQL)
2. 회원 인증 프로그램 수정하기
1. 메뉴화면 재구성하기
파일명 : home.html <? 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
<? 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="logout.html" target="_top">종료</a> </UL> </BODY> </HTML>
파일명 : detail.html
<? 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>
2. 회원관리 프로그램
목록보기(index.html) <? if(!$user_id || !$user_name || $user_level != "2") { echo "<SCRIPT>location.replace('/bbs/login.html');</SCRIPT>"; exit; }
########## 데이터베이스 서버에 연결한다. ########## $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; }
########### 한 페이지당 출력할 게시물의 수 $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>BBS of LeeLAB</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"> </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>
세부사항 보기(viewmember.html) <? if(!$user_id || !$user_name || $user_level != "2") { echo "<SCRIPT>location.replace('/bbs/login.html');</SCRIPT>"; exit; }
########## 데이터베이스 서버에 연결한다. ########## $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; }
########## 선택한 회원의 회원정보를 조회한다. ########## $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>
수정하기(modify.html) <? if(!$user_id || !$user_name || $user_level != "2") { echo "<SCRIPT>location.replace('/bbs/login.html');</SCRIPT>"; exit; }
########## 데이터베이스 서버에 연결한다. ########## $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; }
########## 전달된 변수 $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) <? if(!$user_id || !$user_name || $user_level != "2") { echo "<SCRIPT>location.replace('/bbs/login.html');</SCRIPT>"; exit; }
########## 데이터베이스 서버에 연결한다. ########## $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; }
########## 전달된 변수 $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; } ?>
3. [문제] 회원관리 프로그램 수정 테이블에는 email필드가 있습니다. 그러나 위의 회원관리 프로그램에는 email을 수정하는 부분이 없습니다. modify.html를 수정하여 email도 수정할 수 있게 하기 바랍니다. 또한 그외의 회원 테이블에 빠진 항목이 있다면, 등록폼에 추가하고, 수정폼에서도 처리하기 바랍니다. 예) 주소(address), 주민번호, 전화번호 등
|
[목차] |