PHPでのアクセス権限

ウェブサイトでは、多くの場合、ユーザーの種類は一つではなく複数あり、それぞれが異なる権限を持っています。 例えば、一般ユーザーと管理者がいるかもしれません。管理者は一般ユーザーよりも多くの権限を持つことになります。

これを実装する方法は次の通りです:ユーザーテーブルにもう一つのフィールドを作成し、それをstatusと名付けます。 各ユーザーに対して、そのステータスを保存します:管理者には'admin'という単語、一般ユーザーには'user'という単語を設定しましょう。

ここで、ユーザーが認証された際に、データベースから取得したユーザーのステータスを$_SESSION['status']に記録します:

html<?php
  if (password_verify($_POST['password'], $hash)) {
    $_SESSION['auth'] = true;
    $_SESSION['id'] = $user['id'];
    $_SESSION['status'] = $user['status']; // ステータスを記録
  }
?>

ここで、サイト上に管理者のみがアクセスできるページがあるとします。 そのページのコンテンツが管理者のみに見えるようにしましょう:

html<?php
  if (!empty($_SESSION['auth']) and $_SESSION['status'] === 'admin') {
    // ページのコンテンツを管理者のみに表示
  }
?>