PHP
관리자 페이지 구조
관리자페이지에는 보통 회원관리, 게시판관리 기능이 있고
관리자페이지에는 권한이 존재하기 때문에 메인 페이지에서부터 진입 링크를 별도로 관리하고 노출된 주소로 접속하더라도 로그인 된 관리자 권한이 없으면 이용하지 못하도록 별도의 세션 관리가 필요하다.
또한 회원관리 페이지에서는 연결한 데이터베이스에서 회원정보 테이블을 가져와 테이블로 뿌려줘야 한다.
관리자페이지 - 관리자 검증
└ 회원 관리 - 회원 정보 수정 / 회원 삭제 등
└ 게시판 관리
.
.
.
관리자 세션 만들기
index.php에서 보일 관리자페이지 링크 만들기
index.php이 가지고 있는 세션 값으로 관리자가 로그인 한 경우에만 ‘관리자페이지’ 가 노출 될 수 있도록 조건문 설정
로그인 검증을 통과한 사람에게 보이는
‘로그아웃’, ‘회원정보’ 링크 옆에 ‘관리자페이지’ 링크를 만든다.
< a href="admin/admin.php">관리자페이지 < /a>
해당 a 태그는 관리자 아이디로 로그인했을 때만 보여야 하므로
조건문으로 태그를 감싼다.
< ?php // 로그아웃 상태 if(!$s_id){ ? > < a href="login/login.php">로그인< /a> < a href="members/join.php">회원가입< /a> < ?php } else { // 로그인이 되었다면 ? > < ?php echo $s_name; ? >님 안녕하세요. < ?php //관리자페이지 링크 보이게 하기 if($s_id == "admin") { //admin으로 로그인 했을때만 아래 링크가 보인다. ? > < a href="admin/admin.php">관리자페이지< /a> < ?php }; ? > //관리자페이지 링크 보이게 하기 끝 < a href="login/logout.php" title="로그아웃" onclick="log_out()">로그아웃< /a> < a href="members/edit.php">회원정보< /a> < ?php }; ? >
admin.php 만들기
별도의 php 파일을 만들고 페이지 구성을 넣는다.
이 페이지는 반드시 admin으로 로그인한 관리자 권한만 볼 수 있도록
세션 session을 생성한다.
이 세션 코드는 별도의 파일로 만들어 저장해두면
추후 관리자가 추가되더라도 하나의 파일 수정으로 여러 개의 페이지를 관리할 수 있다.
< ?php session_start(); //세션 기능 시작 $s_id = isset($_SESSION["s_id"])? $_SESSION["s_id"]:""; //$_SESSION["s_id"]로 받아온 세션의 아이디값이 있는지 확인하고 변수에 저장 //관리자 권한인 경우만 접속 가능 하도록 조건문 생성 if($s_id != "admin"){ //받아온 세션의 아이디 값이 admin이 아니면 아래를 출력하고 스크립트로 링크를 이동시킴 echo " < script type=\"text/javascript\"> alert(\"관리자 권한이 필요합니다.\"); location.href=\"../index.php\"; < /script> "; }; ? >
list.php 만들기
admin.php에서 넘어갈 수 있는 페이지 중 회원관리 페이지를 만든다.
페이지에 테이블 형태로 뿌려져야 하기 때문에 필요한 필드의 수 만큼 테이블의 열을 만든다.
가장 기초가 되는 테이블 구성은 아래와 같다.
제목행 이후로부터는 행을 별도로 만들지 않아도 테이블에 정보가 뿌려지면서 자동으로 생성된다.
수정과 삭제는 링크를 통해 각각 회원정보 수정 페이지와 회원 삭제 페이지로 연결될 수 있도록 한다.
< table> < tr> < td>회원번호< /td> < td>이름< /td> < td>아이디< /td> < td>전화번호< /td> < td>이메일< /td> < td>생일< /td> < td>주소< /td> < td>수정< /td> < td>삭제< /td> < tr> < /table>
1. 세션 삽입하기
회원 리스트를 볼 수 있는 사람은 관리자 뿐이므로 관리자 권한을 확인하는 세션을 상단에 추가한다.
< ?php include "../admin_check.php"; //위에서 만든 파일 ? >
2. 데이터베이스 연결
회원 리스트는 연결된 데이터베이스에 저장되어 있기 때문에 데이터 베이스를 연결한다.
< ?php include "../../inc/dbcon.php"; //데이터베이스를 외부 파일로 연결한다 ? >
3. 쿼리 작성/전송
회원 리스트의 값을 화면에 출력해야 하기 때문에 SELECT문을 사용한다.
< ?php include "../../inc/dbcon.php"; //데이터베이스를 외부 파일로 연결한다 ? >
회원정보를 가져올 쿼리를 작성한다.
$ sql = "select * from members;"; //우선 다 가져오고 나서 컬럼 이름으로 하나씩 꺼내오면 된다. //모든 회원의 정보가 다 나와야 하기 때문에 where 절은 사용하지 않는다.
쿼리를 데이터베이스로 보낸다.
$result = mysqli_query($dbcon, $sql);
4. 값 받아서 테이블에 뿌리기
받아온 값들은 세 가지 방법으로 가져올 수 있다.
- mysqli_fetch_row();
- mysqli_fetch_array();
- mysqli_num_rows();
여기서는 컬럼명이 명시된 것이 편하니 array 방식을 사용한다.
$array = mysqli_fetch_array($result);
이렇게 가져온 값을 테이블에 $array[i] 로 넣는다.
< table> < tr> < td>< ?php echo $array[" 컬럼명1"]; ? >< /td> < td>< ?php echo $array[" 컬럼명2"]; ? >< /td> < td>< ?php echo $array[" 컬럼명3"]; ? >< /td> < td>< ?php echo $array[" 컬럼명4"]; ? >< /td> < td>< ?php echo $array[" 컬럼명5"]; ? >< /td> < td>< ?php echo $array[" 컬럼명6"]; ? >< /td> < td>< ?php echo $array[" 컬럼명7"]; ? >< /td> < td>< a href="edit.php?g_idx=< ?php echo $ array[" idx"]; ? >">수정< /a>< /td> < td>< a href="#" onclick='del_mem(< ?php echo $ array[" dx"]; ? >)'>삭제< /a>< /td> < tr> < /table>
그런데 이렇게만 넣으면 한 줄만 출력되게 된다.
반복문을 사용해서 테이블로 정보값을 뿌려야한다.
이 때 while문을 사용하게 된다.
< ?php while ($array = mysqli_fetch_array($result)){ ? > < table> < tr> < td>< ?php echo $array[" 컬럼명1"]; ? >< /td> < td>< ?php echo $array[" 컬럼명2"]; ? >< /td> < td>< ?php echo $array[" 컬럼명3"]; ? >< /td> < td>< ?php echo $array[" 컬럼명4"]; ? >< /td> < td>< ?php echo $array[" 컬럼명5"]; ? >< /td> < td>< ?php echo $array[" 컬럼명6"]; ? >< /td> < td>< ?php echo $array[" 컬럼명7"]; ? >< /td> < td>< a href="edit.php?g_idx=< ?php echo $ array[" idx"]; ? >">수정< /a>< /td> < td>< a href="#" onclick='del_mem(< ?php echo $ array[" dx"]; ? >)'>삭제< /a>< /td> < tr> < /table> < ?php }; ? >
table 태그를 while문 안에 가두면 모든 값이 출력될 때까지 php가 데이터를 가지고 와서 td 태그 안에 뿌리게 된다.