PHP を使用してユーザー権利管理を実装する方法
ユーザー権利管理は、Web サイト開発の非常に重要な部分です。ユーザーのアクセス権を制限し、保護するために使用できます。機密データと機能。 PHP では、いくつかの単純なコードを通じてユーザー権限管理を実現できます。
1. データベース設計
まず、ユーザーと権限の情報を保存するデータベース テーブルを設計する必要があります。以下は、単純なテーブル構造の例です。
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `permission` varchar(50) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `user_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `permission_id` int(11) NOT NULL, PRIMARY KEY (`id`) );
ユーザーの一意の識別子 id
、username
を含むユーザー情報を users
テーブルに保存します。および暗号化された パスワード
。
権限の一意の識別子 id
と権限名 permission
を含む権限情報を permissions
テーブルに保存します。
ユーザーと権限の間の関係を user_permissions
テーブルに保存します。これには、関連付け識別 id
、ユーザー ID user_id
、権限 ID が含まれます。許可ID
。
2. ユーザー ログインと権限の検証
ユーザー ログインは、ユーザー権限を取得するための前提条件です。以下はログイン コードの例です。 :
<?php session_start(); // 数据库连接信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "mydb"; $con = mysqli_connect($servername, $username, $password, $dbname); // 获取登录表单提交的用户名和密码 $username = $_POST["username"]; $password = $_POST["password"]; // 验证用户名和密码 $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($con, $sql); $row = mysqli_fetch_assoc($result); if ($row) { // 用户登录成功,保存用户信息到 session $_SESSION["user_id"] = $row["id"]; } else { // 用户名或密码错误,返回登录页面或给出错误提示 } ?>
上記のコードでは、まず mysqli_connect
関数を通じてデータベースに接続し、ログイン フォームからユーザー名とパスワードを取得します。次に、SQL クエリを使用して、ユーザーが入力したユーザー名とパスワードがデータベース内のそれらと一致することを確認します。検証に合格した場合は、$_SESSION
グローバル変数を使用してユーザーの id
を保存し、その後の権限検証で使用します。
ユーザーが正常にログインしたら、次のコードを使用してユーザーの権限を確認できます。
<?php session_start(); // 验证用户是否登录 if (!isset($_SESSION["user_id"])) { // 如果用户未登录,根据需求,可以重定向到登录页面或给出错误提示 } // 获取用户的权限列表 $user_id = $_SESSION["user_id"]; $sql = "SELECT permissions.permission FROM user_permissions INNER JOIN permissions ON user_permissions.permission_id = permissions.id WHERE user_permissions.user_id = $user_id"; $result = mysqli_query($con, $sql); $permissions = array(); while ($row = mysqli_fetch_assoc($result)) { $permissions[] = $row["permission"]; } // 验证用户是否有指定权限 function hasPermission($permission) { global $permissions; return in_array($permission, $permissions); } ?>
上記のコードでは、ユーザーは最初に認証されます。ログインしていますか?ユーザーがログインしていない場合は、ログイン ページにリダイレクトするか、実際のニーズに基づいてエラー プロンプトを表示することができます。
次に、ユーザーの id
を通じてデータベースにクエリを実行し、ユーザーの権限リストを取得して、配列に保存します。最後に、ユーザーが指定された権限を持っているかどうかを確認する hasPermission
関数を定義できます。
3. 権限制御の例
次は、ユーザー権限を使用して Web サイトの機能を制御する方法を示す簡単な例です:
<?php require_once "auth.php"; // 验证用户是否有编辑文章的权限 if (hasPermission("edit_article")) { // 显示编辑文章的按钮 } ?>
上記のコードでは、次のように導入しました。認証コードを入力し、hasPermission
関数を使用して、ユーザーが edit_article
権限を持っているかどうかを確認します。ユーザーがこの権限を持っている場合、記事を編集するためのボタンが表示されます。
概要:
上記のコード例を通じて、PHP を使用してユーザー権限管理を実装する方法を確認できます。まず、ユーザーと権限の情報を保存するデータベース テーブルを設計する必要があります。その後、ユーザーのログインと権限の検証を通じて、ユーザーのアクセスを制限し、機密データと機能を保護できます。最後に、Web サイトの機能表示は、ユーザーの権限に従って制御できます。
以上がPHP を使用してユーザー権限管理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。