PHP 프로그래밍

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


Web Programming >> PHP Programming
[목차]
제21장 온라인 서점 쇼핑몰 만들기

    3. 관리자 인증 처리 구현

 

관리자용 웹문서들은 /shop/admin/이라는 디렉토리를 만들고, admin디렉토리에 저장한다. 관리자 페이지를 따로 관리하기 위해서이다.

/ --  shop/ -- admin/ --- product/ (제품관리)

             |         |

             |         +- order/ (주문관리)

             |         |

             |         +- admin.html (관리자 인증에 필요한 파일)

             |         +- index.html (아이디와 암호를 입력하는 폼)

             |         +- login_process.html (로그인 처리프로그램)

             |         +- home.html (관리자 화면)

             |         +- menu.html (메뉴)

             |         +- welcome.html (환영 메시지)

             |         +- logout.html (종료 프로그램)

             |

             +-- user_function.html (사용자 정의 함수들)

             |

             +-- dbconn.html (DB connect에 필요한 파일)

 

디렉토리 구조는 위와 같다.

 

1. 관리자용 테이블

$ vi admin.sql

CREATE TABLE admin (

  uid int(9) unsigned DEFAULT '1' NOT NULL auto_increment,

  id varchar(30) DEFAULT '' NOT NULL,

  passwd varchar(30) DEFAULT '',

  logindate int(10) unsigned NOT NULL,

  PRIMARY KEY (uid)

);

 

INSERT INTO admin (id,passwd) VALUES ('admin',password('1234'));

$ mysql -u jklee -p bookshop < admin.sql

 

2. 로그인 화면(index.html)

 

<HTML>

<HEAD>

<TITLE> 온라인 서점 관리자 인증 - 로그인 화면 </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>

</BODY>

</HTML>

 

 

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

<?

include "../user_function.html";

include "../dbconn.html";

 

if($id && $passwd) {

    if(!$id) {

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

        exit;

    }

    else if(!$passwd) {

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

        exit;

    }

    else {

        $result = mysql_query("SELECT password('$passwd')");

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

        $query = "SELECT id FROM admin WHERE id='$id' AND passwd='$user_passwd'";

        $result = mysql_query($query);

 

        if(!$result) {

             $errNO = mysql_errno($dbconn);

             $errMSG = mysql_error($dbconn);

             error("에러코드 $errNO : $errMSG");

             exit;

        }

        $total_record = mysql_num_rows($result);

        if(!$total_record) {

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

                exit;

        }

        else {

            $row = mysql_fetch_object($result);

 

            session_start();

 

            session_register("user_id");

            session_register("user_logindate");

            $user_id = $row->id;

 

            $logindate = time();

            $user_logindate = $logindate;

 

            $query  = "UPDATE admin SET logindate = $logindate WHERE id = '$row->id'";  

            $result = mysql_query($query);

            if(!$result) {

                error("QUERY_ERROR");

                exit;

            }

 

            echo "

                 <SCRIPT>

                   location.replace('home.html');

                 </SCRIPT>";

            exit;

 

        }

 

    }

}

?>

 

4. 관리자화면

관리자 인증후, 관리자 화면은 프레임으로 나뉘어서, 화면이 구성된다. 필요한 파일은 home.html, menu.html, welcome.html 세 개의 문서이다.

파일명 : home.html

<?

include "../user_function.html";

include "../dbconn.html";

 

include("admin.html");

 

if(!$user_id || strcmp($row->logindate,$user_logindate)) {

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

      exit;

}

 

?>

 

<html>

<head><title> 관리자 화면</title></head>

<frameset border=1 cols="135,*">

<frame scrolling=no  noresize src="menu.html" name=bookshop-menu>

<frame scrolling=auto  src="welcome.html" name='bookshop_detail'>

</frameset>

</html>

 

파일명 : menu.html

<?

include "../user_function.html";

include "../dbconn.html";

 

include("admin.html");

 

if(!$user_id || strcmp($row->logindate,$user_logindate)) {

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

      exit;

}

?>

<HTML>

<HEAD>

<TITLE> 관리자 - 메뉴 </TITLE>

</HEAD>

 

<BODY BGCOLOR="#EEEEEE">

<br>

<UL>

        <LI> <A HREF="product/list.html" target="bookshop-detail">제품관리</A>

        <LI> <A HREF="order/" target="bookshop-detail">주문관리</A><br>

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

 

</UL>

</BODY>

</HTML>

 

 

파일명 : welcome.html

<?

include "../user_function.html";

include "../dbconn.html";

 

include("admin.html");

 

if(!$user_id || strcmp($row->logindate,$user_logindate)) {

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

      exit;

}

 

?>

 

<HTML>

<HEAD>

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

</HEAD>

<BODY BGCOLOR="#EEEEEE">

<br>

<center>

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

</center>

</BODY>

</HTML>

 

 

 

 

3. 로그 아웃 (logout.html)

 

<?

        session_start();

        $user_id = null;

        $HTTP_SESSION_VARS["user_id"] = null;

        $user_logindate = null;

        $HTTP_SESSION_VARS["user_logindate"] = null;

 

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

        

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

 

?>

 

4. 기타 실행에 필요한 Include파일들

파일명 : dbconn.html

<?

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

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

 

########## BOOKSHOP 데이터베이스를 선택한다. ##########

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

if(!$status) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

 

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

   exit;

}

?>

 

파일명 : user_function.html

<?

 

function error($text) {

        echo "

                <SCRIPT>

                alert('$text');

                history.go(-1);

                </SCRIPT>";

}

 

?>

 

파일명 : admin.html

<?

session_start();

 

if($user_id != "") {

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

   $query = "SELECT logindate FROM admin WHERE id = '$user_id'";

   $result = mysql_query($query);

   if(!$result) {

      error("QUERY_ERROR");

      exit;

   }

   $rows = mysql_num_rows($result);

   

        if($rows) {

                $row = mysql_fetch_object($result);

        }

}

 

?>

 

 

[목차]

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

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

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