PHPにおける権限分離を伴う登録
ユーザー権限を追加する際には、登録機能に変更を加える必要があります。これでユーザー登録時に、INSERTクエリでそのステータスを指定しなければなりません。
通常、初期登録時には、サイトのすべてのユーザーが最も低いステータスを受け取ります。つまり、今回の場合は'user'です:
<?php
$query = "INSERT INTO users
SET login='$login', password='$password', 'status'='user'";
?>
より高いステータスは通常、管理者が付与します。管理者は管理画面でユーザーリストを確認し、例えば、任意のユーザーを管理者にすることができます。
では、その場合、サイト上で最初の管理者はどのように現れるのでしょうか?最も簡単な方法:一般ユーザーとして登録し、PhpMyAdminを通じてそのユーザーを管理者にすることです。
より複雑な方法:ホスティングでの初回起動時に、サイトのインストールを実行し、フォームを使ってログインとパスワードを尋ね、サイトの最初のユーザーを登録し、そのユーザーに管理者ステータスを付与します。
登録コードを変更して、追加されるすべてのユーザーが'user'ステータスを受け取るようにしてください。
任意のユーザーのステータスを手動で'admin'に変更してください。このユーザーでログインしてください。
admin.phpページを作成し、'admin'ステータスのユーザーのみがアクセスできるようにしてください。
admin.phpページで、サイトに登録されているすべてのユーザーのリストを表形式で表示してください。表にはログイン名とステータスの2列を設けてください。
前のタスクを修正し、さらに3列目を追加してください。その列には、管理者が任意のユーザーを削除できるリンクを設けてください。
前のタスクを修正し、管理者の行が赤色、一般ユーザーの行が緑色で表示されるようにしてください。
前のタスクを修正し、さらに別の列を追加してください。この列では、管理者がユーザーの権限を変更できるようにします。すべての一般ユーザーには管理者にするリンクを、管理者にはユーザーにするリンクを設置するようにしてください。
サイトのすべてのページで、ヘッダー部分にログインしているユーザーが自分のログイン名とステータスを確認できるようにしてください。
前のタスクを修正し、管理者の場合はサイトのヘッダーに管理画面へのリンクも表示されるようにしてください。