ホームページ  >  記事  >  バックエンド開発  >  PHP を使用してユーザー権限管理を実装する方法

PHP を使用してユーザー権限管理を実装する方法

PHPz
PHPzオリジナル
2023-09-06 11:54:242164ブラウズ

如何使用 PHP 实现用户权限管理

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`)
);

ユーザーの一意の識別子 idusername を含むユーザー情報を users テーブルに保存します。および暗号化された パスワード

権限の一意の識別子 id と権限名 permission を含む権限情報を permissions テーブルに保存します。

ユーザーと権限の間の関係を user_permissions テーブルに保存します。これには、関連付け識別 id、ユーザー ID user_id、権限 ID が含まれます。許可ID

2. ユーザー ログインと権限の検証

  1. ユーザー ログイン

ユーザー ログインは、ユーザー権限を取得するための前提条件です。以下はログイン コードの例です。 :

<?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 を保存し、その後の権限検証で使用します。

  1. 権限の検証

ユーザーが正常にログインしたら、次のコードを使用してユーザーの権限を確認できます。

<?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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。