반응형

 

 

제품 등록을 하려다보니 관리자 작업을 먼저 해야겠다는 생각이 들었다. 테이블부터 만들어보자. 기존에 쓰던 members 테이블에 몇개의 컬럼을 추가했다.


CREATE TABLE `admins` (
  `idx` int(11) NOT NULL AUTO_INCREMENT,
  `userid` varchar(145) DEFAULT NULL,
  `email` varchar(245) DEFAULT NULL,
  `username` varchar(145) DEFAULT NULL,
  `passwd` varchar(200) DEFAULT NULL,
  `regdate` datetime DEFAULT current_timestamp(),
  `level` tinyint(4) DEFAULT NULL,
  `last_login` datetime DEFAULT NULL,
  `end_login_date` datetime DEFAULT NULL,
  PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

 

INSERT INTO admins (userid,email,username,passwd,regdate,level) VALUES
 ('admin','admin@shop.com','관리자','ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413','2022-01-24 17:12:32.000',100);

 

위 데이터는 아이디는 admin이고 암호는 123456 이다.

 

level이라는 것이 관리자에선 중요하다. 모든 관리자가 모든 페이지에 들어가는게 아니끼 때문에 관리자도 권한이 필요하다. 어떤 관리자는 상품등록만 가능하고 어떤 관리자는 게시판만 사용하게 해야한다.

 

또 관리자가 아르바이트로 들어오는 경우도 있다. 이런 경우를 대비해서 로그인 기한도 정해주는 것이 좋다. 한가지 더 한다면 ip같은 것도 지정해서 특정 ip에서만 로그인 가능하게 하거나 할 수도 있는데 그건 하지 말자. 귀찮다.

 

페이지를 만들어보자.

 

/admin/login.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";
?>
<body class="text-center">
   
        <main class="form-signin">
        <form style="padding:200px;" method="post" action="login_ok.php">
            <img class="mb-4" src="https://getbootstrap.com/docs/5.1/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
            <h1 class="h3 mb-3 fw-normal">쇼핑몰 관리자 페이지</h1>

            <div class="form-floating" style="margin-bottom:10px;">
            <input type="text" name="userid" class="form-control" id="floatingInput" placeholder="name@example.com" required>
            <label for="floatingInput">아이디를 입력하세요</label>
            </div>
            <div class="form-floating">
            <input type="password" name="passwd" class="form-control" id="floatingPassword" placeholder="Password" required>
            <label for="floatingPassword">비밀번호를 입력하세요.</label>
            </div>

           
            <button class="w-100 btn btn-lg btn-primary" style="margin-top:20px;" type="submit">로그인</button>

        </form>
        </main>

</body>        

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>

이번엔 로그인 처리를 해보자

/admin/login_ok.php

<?php session_start();
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";
ini_set( 'display_errors', '0' );

$userid=$_POST["userid"];
$passwd=$_POST["passwd"];
$passwd=hash('sha512',$passwd);

$query = "select * from admins where userid='".$userid."' and passwd='".$passwd."'";
$result = $mysqli->query($query) or die("query error => ".$mysqli->error);
$rs = $result->fetch_object();

if($rs){
    $sql="update admins set last_login=now() where idx=".$rs->idx;
    $result=$mysqli->query($sql) or die($mysqli->error);
    $_SESSION['AUID']= $rs->userid;
    $_SESSION['AUNAME']= $rs->username;
    $_SESSION['ALEVEL']= $rs->level;
   
    echo "<script>alert('어서오십시오.');location.href='/admin/product/product_list.php';</script>";
    exit;

}else{
    echo "<script>alert('아이디나 암호가 틀렸습니다. 다시한번 확인해주십시오.');history.back();</script>";
    exit;
}

?>

product_list.php는 아직 안만들었다. 로그인하고 없는 페이지가 나오면 잘한것이다.

 

관리자 등록화면은 각자 만들어보자. 회원가입이랑 비슷하니 참고해서 만들어보자.

 

 

 

반응형

+ Recent posts