현재 위치: > 최신 기사 목록> 효율적인 사용자 권한 제어 시스템을 달성하기 위해 PHP를 사용하는 방법

효율적인 사용자 권한 제어 시스템을 달성하기 위해 PHP를 사용하는 방법

M66 2025-06-19

PHP 개발 기술 : 사용자 권한 제어를 구현하는 방법

웹 응용 프로그램에서 사용자 권한 제어는 시스템의 보안을 보장하는 핵심 기능입니다. 무단 액세스를 방지 할뿐만 아니라 합법적 인 사용자가 필요한 권한을 얻을 수 있도록합니다. 이 기사에서는 특정 PHP 코드 예제를 통해 사용자 권한 제어를 점차적으로 실현하게됩니다.

1. 데이터베이스 설계

권한 제어 시스템을 개발하기 전에 먼저 사용자 정보 및 권한 데이터를 저장하기 위해 데이터베이스를 설계해야합니다. 일반적으로 다음 테이블을 만듭니다.

1. 사용자 표 : 사용자의 기본 정보 및 로그인 자격 증명을 저장합니다.

2. 역할 표 : 사용자 역할과 관련 권한을 정의합니다.

3. 권한 표 : 시스템에 사용 가능한 모든 권한을 나열합니다.

4. 역할 권한 관계 표 : 역할과 권한을 연결하는 다수의 관계.

샘플 코드 :

테이블 사용자 만들기 (
  id int (11) auto_increment 기본 키,
  username varchar (50) not null,
  비밀번호 varchar (255) null,
  역할 _id int (11)는 null이 아닙니다
);

테이블 역할 생성 (
  id int (11) auto_increment 기본 키,
  varchar (50) 이름은 null이 아닙니다
);

테이블 권한 생성 (
  id int (11) auto_increment 기본 키,
  이름 Varchar (50) NOL NULL,
  자원 Varchar (50)는 null이 아닙니다
);

테이블 생성 roble_permissions (
  id int (11) auto_increment 기본 키,
  role_id int (11) NOL NULL,
  permission_id int (11)는 null이 아닙니다
);
  

2. 로그인 함수

권한 제어를 구현하기 전에 기본 로그인 기능을 구현해야합니다. 사용자는 사용자 이름과 비밀번호를 제출하여 확인하고 시스템은 데이터베이스의 레코드를 기반으로 사용자 자격 증명을 확인합니다.

샘플 코드 :

session_start ();

if ($ _server [ 'request_method'] == 'post') {
  $ username = $ _post [ 'username'];
  $ password = $ _post [ 'password'];

  // 데이터베이스 및 쿼리 사용자 정보에 연결 $ conn = new MySqli ( 'localhost', 'username', 'password', 'database');
  $ query = "username = '$ username'및 password = '$ password'";
  $ result = $ conn-> query ($ query);

  if ($ result-> num_rows == 1) {
    $ row = $ result-> fetch_assoc ();
    $ _session [ 'user_id'] = $ row [ 'id'];
    $ _session [ 'username'] = $ row [ 'username'];
    $ _session [ 'role_id'] = $ row [ 'role_id'];
    헤더 ( '위치 : Dashboard.php');
    출구;
  } 또 다른 {
    $ error = "유효하지 않은 사용자 이름 또는 비밀번호";
  }
}

if (isset ($ _ session [ 'user_id'])) {
  헤더 ( '위치 : Dashboard.php');
  출구;
}
  

3. 권한 검증

사용자가 로그인 한 후에는 사용자의 역할에 따라 권한을 확인하여 사용자가 승인 된 리소스에만 액세스 할 수 있도록해야합니다. 권한 확인 기능을 작성하면 사용자가 허가되지 않은 페이지에 액세스하는 것을 제한 할 수 있습니다.

샘플 코드 :

함수 checkPermission ($ resource) {
  // 사용자가 로그인한지 확인 if (! isset ($ _ session [ 'user_id'])) {
    헤더 ( '위치 : login.php');
    출구;
  }

  // 사용자 역할의 권한 쿼리 $ conn = new MySqli ( 'localhost', 'username', 'password', 'database');
  $ query = "select elections.name 
            (역할 
            roboles.id = role_permissions.role_id에 대한 내부 조인 역할_permissions) 
            role_permissions.permission_id = hermissions.id에 대한 내부 조인 권한 
            where roboles.id = {$ _session [ 'role_id']} 
            및 권한. resource = '$ resource' ";

  $ result = $ conn-> query ($ query);

  if ($ result-> num_rows == 0) {
    헤더 ( '위치 : Unauthorized.php');
    출구;
  }
}

CheckPermission ( 'dashboard.php');
  

결론적으로

이 기사는 데이터베이스 디자인, 사용자 로그인 확인, 권한 확인 및 기타 링크를 포함하여 PHP 사용자 권한 제어를위한 기본 구현 방법을 제공합니다. 요구에 따라 다른 웹 응용 프로그램 시나리오에 맞게이 시스템을 더 최적화 할 수 있습니다. 권한 제어는 시스템의 보안을 향상시킬뿐만 아니라 사용자 경험을 향상시킬 수 있습니다. 모든 PHP 개발자에게 필수 기술입니다.