[PHP_AdminPage] using Cookie & DB

http://silnex.kro.kr/PHP_Tutorial/cookie_login/admin/admin_page.php

== PHP Admin Page ==

admin_흐름도
점점 간소화 되가는 흐름도;;;

흐름도를 보면알 수 있다 시피 총 2개의 파일을 이용해 Register을 구현했다.
각 php 파일의 대한 설명은 admin.php > admin_del.php 순서로 하겠다.

또한 login.php, main_page.php 또한 수정이 가해졌는데
이 부분에 대해선 중간 점검 글(06-28 예정)에서 알려주도록 하겠다.


Admin_Page.php

admin 계정으로 접속했을 때 main_page에 뜨는 링크를 통해 접속 할 수 있다.

<?php
	$user_id = $_COOKIE['user_id'];
	if (!$user_id == 'admin'){
		echo "<script>alert('권한이 없습니다.')</script>";
		echo "<meta http-equiv='refresh' content='0;url=../main_page.php'>";
	}
	else{
		echo "<h1> Admin page </h1>";
		echo "<h2> Welcome admin (".$_COOKIE['user_name'].")!</h2>";
		echo "<a href='../main_page.php'>Go To Main page</a>";
		
		echo "<form method='post' action='admin_del.php'>";
		echo "<table><tr><td>USER ID</td> <td>USER_PW</td> <td>USER_NAME</td> <td>USER_EMAIL</td>
			<td><input type='submit' value='삭제'/></td></tr>";
		
		include_once('../conn.php');
		$sql="SELECT * FROM `user_info`";
		$result=mysqli_query($conn, $sql);
		while($db=mysqli_fetch_array($result)){
			if($db['user_id'] == 'admin')	continue;
			echo "<tr><td>".$db['user_id']."</td> <td>".$db['user_pw']."</td> <td>".$db['username']."</td> <td>".$db['email']."</td>
			<td><input type='checkbox' name='user_list[]' value='".$db['user_id']."'></td></tr>";
		}
		echo "</table> </from>";
	}
?>

분석

2번째 줄 : 현재 로그인한 계정의 정보를 쿠키에서 가져옴
3 ~6번 줄 : admin이 아닐 경우 main_page로 리디이렉션
8~10번 줄 : 페이지 제목과 main_page로 가는 링크를 띄움
12~번 줄 : <form>에 대한 설명은 생략하도록 하겠다.
13  번 줄 : 아래 표시될 user정보를 구별 하기 쉽게 하기위한 표의 제목 부분
16~18 줄 : DB와 연결하여 user_info의 정보를 모두 가져오는 SQL 쿼리를 실행
19~23 줄 : DB의 내용을 모두 표시하기 위해 반복문(while)을 사용
24 줄 : HTML 형식을 맞추기 위한 부분. (크게 중요하지 X)


Admin_Del.php

admin_page에서 선택된 user의 항목을 모두 삭제 하는 SQL쿼리를 실행하는 파일

<?php
if(!isset($_POST['user_list'])){
	echo "<script>alert('Choice USER!');";
	echo "history.back()</script>";
}else{
	foreach($_POST['user_list'] as $user){
		include('../conn.php');
		$sql="DELETE FROM `user_info` WHERE `user_id`='$user'";
		mysqli_query($conn, $sql);
	}
		echo "<script>alert('DELETED!!')</script>";
		echo "<meta http-equiv='refresh' content='0;url=admin_page.php'/>";
}

?>

분석

2~4 줄 : 삭제할 USER가 선택 되지 않은 경우에 대한 예외 처리
6~10 줄 : 삭제할 USER 들의 정보를 POST를 통해 전달 받은 뒤에
    반복문을 통해 제거 SQL 쿼리를 전달
11~12 줄 : 삭제 완료 후 admin_page로 리다이렉션

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.