웹 응용 프로그램에서 사용자 권한 제어는 시스템의 보안을 보장하는 핵심 기능입니다. 무단 액세스를 방지 할뿐만 아니라 합법적 인 사용자가 필요한 권한을 얻을 수 있도록합니다. 이 기사에서는 특정 PHP 코드 예제를 통해 사용자 권한 제어를 점차적으로 실현하게됩니다.
권한 제어 시스템을 개발하기 전에 먼저 사용자 정보 및 권한 데이터를 저장하기 위해 데이터베이스를 설계해야합니다. 일반적으로 다음 테이블을 만듭니다.
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이 아닙니다 );
권한 제어를 구현하기 전에 기본 로그인 기능을 구현해야합니다. 사용자는 사용자 이름과 비밀번호를 제출하여 확인하고 시스템은 데이터베이스의 레코드를 기반으로 사용자 자격 증명을 확인합니다.
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'); 출구; }
사용자가 로그인 한 후에는 사용자의 역할에 따라 권한을 확인하여 사용자가 승인 된 리소스에만 액세스 할 수 있도록해야합니다. 권한 확인 기능을 작성하면 사용자가 허가되지 않은 페이지에 액세스하는 것을 제한 할 수 있습니다.
함수 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 개발자에게 필수 기술입니다.