2017-12-11 26 views
0

저는 역할이있는 일부 PHP 페이지를 보호하려고합니다. 사람들이 로그인을 할 때 코드를 사용하고 있지만 링크를 알고 로그인을하지 않으면 페이지에 액세스 할 수 있으며 이유를 이해할 수 없습니다.php 페이지는 롤스로 보호되지만 다른 손님은 보호하지 않습니다.

아무도 도와 줄 수 있습니까?

"admin"역할의 사용자 만 액세스 할 수있는 페이지를 보호하려면이 코드를 사용하고 있습니다.

<?php 
// Initialize the session 
session_start(); 

// If session variable is not set it will redirect to login page 
if(isset($_SESSION['username'])){if ($_SESSION['role']=='admin') { 

} else { 
    header('location: index.php'); 
} 
} 
?> 
+0

** 경고 ** : 자신의 액세스 제어 층을 쓰는 것은 쉬운 일이 아닙니다 그것은 심각한 오해 할 수있는 많은 기회가 있습니다. [Laravel] (http://laravel.com/)과 같은 최신 [개발 프레임 워크] (http://codegeekz.com/best-php-frameworks-for-developers/)가있을 때 자신의 인증 시스템을 작성하지 마십시오. 강력한 [인증 시스템] (https://laravel.com/docs/master/authentication)이 내장되어 있습니다. 절대 최소한 [권장 보안 베스트 프랙티스] (http://www.phptherightway.com/#security)를 준수하고 ** 비밀번호를 일반 텍스트 **로 저장하지 마십시오. – tadman

+0

** ALL ** laravel을 사용하십시오! 그럼 아무것도 배우지 않아. –

+0

예 Laravel은 미들웨어를 통해 이것을 관리하는 것이 훨씬 낫습니다. 다음 프로젝트 나 현재 프로젝트에서도 이것을 고려하십시오. –

답변

1

이 시도 :

<?php 
    // Initialize the session 
    if(!isset($_SESSION)) { 
     session_start(); 
    } 

    // If session variable is not set it will redirect to login page 
    if(empty($_SESSION['username'])) { 
      header('Location: index.php'); 
    } else { 
     if ($_SESSION['role'] != 'admin') { 
      header('Location: index.php'); 
     } 
    } 
?> 
+1

그것은이 방법으로 일했다 :) –

+0

당신은 당연히 사용자 이름이있는 필요 조건을 제거하기 위하여 선택할 수 있었다, 그러나 그것은 당신의 ofcourse까지이다 :) –