Webアプリケーションでは、ユーザー許可制御がシステムのセキュリティを確保するための重要な機能です。許可されていないアクセスを防ぐだけでなく、合法的なユーザーが必要な許可を取得することも保証します。この記事では、特定のPHPコードの例を介してユーザーの許可制御を徐々に実現することができます。
許可制御システムを開発する前に、最初にユーザー情報と許可データを保存するデータベースを設計する必要があります。通常、次のテーブルを作成します。
1。ユーザーテーブル:ユーザーの基本情報とログイン資格情報を保存します。
2。ロールテーブル:ユーザーロールと関連する権限を定義します。
3。許可表:システム上の利用可能なすべてのアクセス許可をリストします。
4。役割の許可関係表:役割と権限をつなぐ多目的関係。
テーブルユーザーを作成します( id int(11)auto_incrementプライマリキー、 ユーザー名前varchar(50)nullではありません、 パスワードvarchar(255)nullではありません、 role_id int(11)nullではありません ); テーブルロールを作成します( id int(11)auto_incrementプライマリキー、 名前前varchar(50)nullではありません ); テーブル権限を作成します( id int(11)auto_incrementプライマリキー、 名前前varchar(50)nullではありません、 リソースvarchar(50)nullではありません ); テーブルの役割を作成します_permissions( id int(11)auto_incrementプライマリキー、 role_id int(11)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 = "select * fromユーザーから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'); 出口; }
ユーザーがログインした後、ユーザーの役割に基づいてアクセス許可を確認して、ユーザーが許可されているリソースのみにアクセスできるようにする必要があります。許可チェック関数を作成することにより、ユーザーが固定されていないページにアクセスすることを制限できます。
function checkpermission($ resource){ //ユーザーがログインしているかどうかを確認しますif(!isset($ _ session ['user_id'])){ ヘッダー( '場所:login.php'); 出口; } //ユーザーロールのライセンスをクエリ$ conn = new mysqli( 'localhost'、 'username'、 'password'、 'database'); $ query = "permissions.nameを選択します from(役割 内部の組み合わせleoles.id = chole_permissions.role_idの内側 内部の組み合わせlelowe_permissions.permiss_id = permissions.idの内部の組み合わせライセンス where choles.id = {$ _session ['role_id']} およびpermissions.resource = '$ resource' "; $ result = $ conn-> query($ query); if($ result-> num_rows == 0){ ヘッダー( '場所:unauthorized.php'); 出口; } } CheckPermission( 'dashboard.php');
この記事では、データベース設計、ユーザーログイン検証、許可確認、その他のリンクなど、PHPユーザー許可制御のための基本的な実装方法を提供します。ニーズに応じて、さまざまなWebアプリケーションシナリオに合わせてこのシステムをさらに最適化できます。許可制御は、システムのセキュリティを強化するだけでなく、ユーザーエクスペリエンスを向上させることもできます。これは、すべてのPHP開発者にとって必須のスキルです。