| User.php | クラス本体 |
| user.config.php | 設定ファイル |
| login.php | ログインフォーム |
| init.sql | データベースを初期化するSQL |
テーブル users にユーザーを登録します。
| userid | 0-9a-zA-Z を使ったランダムな32文字の文字列 |
| loginname | ログインに使用するための文字列 |
| password | 任意の文字列 $PASSWORD を password_hash($PASSWORD, PASSWORD_BCRYPT) でハッシュ化して登録 |
| auth | 0〜9 の数字(権限レベル 権限詳細は後述) |
次に、テーブル user_property にユーザーの属性値を登録します。
init.sql を実行するとユーザー名とメールアドレスが属性値として登録できるようになりますが、他の属性値を登録できるようにしてもかまいません。
ここに登録した属性値は、ログイン後に読み出すことができます。(後述)
userid は、テーブル users に登録した文字列と同じ文字列を登録してください。
user.config.php を編集します。
'cookie_u' => 'u',
'cookie_g' => 'g',
'expires' => 3600 * 24 * 30, // 保存したCookieの有効期限
'db_type' => 'mysql', // 'mysql' or 'sqlite'
'db_host' => 'localhost',
'db_user' => 'DB_USERID',
'db_pass' => 'DB_PASSWORD',
'db_name' => 'DB_NAME',
'login_url' => 'https://DOMAIN/PATH/TO/login.php', // ログインフォームのURL
'logout_url' => 'https://DOMAIN/', // ログアウトしたときの遷移先
パスワード認証をかけるPHPスクリプトに対して、次のように追加します。
<?php
...
require_once '/PATH/TO/User.php';
...
$user = new User();
$user->login('login');
...
ログアウトするには、メソッド $user->logout() を呼び出します。
User.php を読み込んでいるページのURLに ?logout を付けてアクセスすると、$user->logout() を実行するようにしてあります。
例: https://DOMAIN/?logout
ユーザー毎に権限レベルを設定して、指定した権限レベル以上のユーザーでなければログイン認証を失敗するように指定します。
| 権限レベル 0 | ゲストユーザーです。通常は指定しません。 |
| 権限レベル 1 〜 8 | 一般ユーザーです。 |
| 権限レベル 9 | 管理者ユーザーです。 |
ログインメソッドの引数で、ログイン可能なユーザーの権限レベルを指定します。
| $user->login(); | 引数なし ログインしなくても表示できるページです。 |
| $user->login('login'); | ログインが必要なページです。(権限 1以上) |
| $user->login('admin'); | 管理者(権限 9)のみログインできるページです。 |
| $user->login('auth=N'); | 権限 N (N は 1 〜 9)以上のユーザーがログインできるページです。 |
| $user->userid | ユーザーID |
| $user->loginname | ログインID |
| $user->auth | 権限レベル |
| $user->p | テーブル user_property に保存している内容が配列で格納されます。 $user->p['username']、$user->p['mailadrs'] など |
| $user->login() | ログイン |
| $user->logout() | ログインアウト |
version 4.1 2025. 1. 2 - Modify the SQL statement
version 4.0 2022.11.27 - Use PDO::
version 3.2 2022.10.17 -
version 3.1.0 2022. 7.29 -
version 3.0.2 2021.10. 3 -
version 3.0 2021. 3.25 -
version 2.0 2019. 4. 5 - 2021. 3.23
version 1.0 - 2016.11.17