現在の位置: ホーム> 最新記事一覧> PHPを使用して効率的なユーザー許可制御システムを実現する方法

PHPを使用して効率的なユーザー許可制御システムを実現する方法

M66 2025-06-19

PHP開発スキル:ユーザー許可制御を実装する方法

Webアプリケーションでは、ユーザー許可制御がシステムのセキュリティを確保するための重要な機能です。許可されていないアクセスを防ぐだけでなく、合法的なユーザーが必要な許可を取得することも保証します。この記事では、特定のPHPコードの例を介してユーザーの許可制御を徐々に実現することができます。

1。データベース設計

許可制御システムを開発する前に、最初にユーザー情報と許可データを保存するデータベースを設計する必要があります。通常、次のテーブルを作成します。

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ではありません
);
  

2。ログイン関数

許可制御を実装する前に、基本的なログイン関数を実装する必要があります。ユーザーはユーザー名とパスワードを送信して確認し、システムはデータベースのレコードに基づいてユーザーの資格情報をチェックします。

サンプルコード:

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');
  出口;
}
  

3。許可確認

ユーザーがログインした後、ユーザーの役割に基づいてアクセス許可を確認して、ユーザーが許可されているリソースのみにアクセスできるようにする必要があります。許可チェック関数を作成することにより、ユーザーが固定されていないページにアクセスすることを制限できます。

サンプルコード:

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開発者にとって必須のスキルです。