권한에 따라 페이지 비정상 접근 방지

 

일반 유저의 경우 http://hoowave.dothome.co.kr/user/userpage.html

관리자의 경우 http://hoowave.dothome.co.kr/admin/adminpage.html

입니다.

 

비회원이 일반 유저, 관리자 페이지 접근

일반 유저가 관리자 페이지 접근

하는 것을 방지해 볼게요.


현재 폴더 구조가

 

이렇게 되어있어요.

아 참 hothome은 다른 이유 없이 dothome 치려다 오타 나서 hothome으로 됐어요..

 

main 폴더 안에서 회원가입, 로그인을 처리하고

/user

/admin

페이지로 분기하게 되는데 동시에

DB에서 받아온 회원 정보로

세션 값을 부여받습니다.

그 안에 권한 값도 있어요.

$localdir=explode("/",$_SERVER['REQUEST_URI']);
$localdir=$localdir[1];

 

세션 값을 가져오기 전에 현재 로컬에서 접속된 URL을 가져옵니다.

슬러시 문자열로 잘라서 첫 번째 디렉터리 명을 가져옵니다.

설계한 폴더 구조랑 같이 비교해 보면

회원가입, 로그인 처리할 때는 $localdir은 main이 되고

일반 유저일 땐 user 관리자일 땐 admin이 되겠죠..

 

    switch($localdir)
    {
        case "user":
            if(!isset($_SESSION['permit']))
            {
                header("Location: http://hoowave.dothome.co.kr"); 
            }
            break;
        case "admin":
            if($_SESSION['permit'] != 2)
            {
                header("Location: http://hoowave.dothome.co.kr"); 
            }
            break;
    }

 

$localdir을 가져왔으면 폴더별로 세션 값과 비교해 줍니다.

user 폴더 내부에 접근할 땐 관리자도 접근할 수 있어야 되니까

permit이라는 세션이 존재하지 않는다면 메인 페이지로 리다이렉션 시키게 해놨고

 

admin 폴더 내부에 접근할 땐 관리자만 접근할 수 있어야 되니까

permit이라는 세션의 값이 2가 아닐 때만 메인 페이지로 리다이렉션 시키게 해놨습니다.

 

해당 코드를 config 파일이나 공통적으로 include 되는 곳에 넣어주면 되겠죠?

 

아 그리고 폴더를 추가한 뒤에는 따로 case 조건을 추가해서 처리하게 끔 해주시면 됩니다.