こんにちは、片山学園 鉄道研究会です。
実は、鉄道研究会では部員専用サイトを作っています。
こんな感じなんですが、当然見るためにはログインが必要です。
このサイトではApache+PHP+SQLite+Bootstrap+jQueryといった、結構普通の技術を使ってログイン機能を作っています。
それでは、具体的な作り方を紹介していきます。
ログインをさせるための設定
どのページにアクセスしてもログインさせるためには、ページがリクエストされたときに、
- ログインしているか判定
- ログインしてなかったらログインページに飛ばす
- ログインしていたらページを表示
といった処理をする必要があります。
このサイトでは、すべて共通のファイルを最初に読み込んで、そのファイルでこれらの処理を行っています。
このとき大切なこととして、
絶対にログインページではこの処理をしてはいけないということです。
なぜなら、
- ログインページにアクセス
- ログインしているか判定
- ログインしてないのでログインページにリダイレクト(1に戻る)
の無限ループが起こるからです。自分もここではまりました。
このサイトではログインしているユーザー名を$_SESSION['user']
に保存しているので、
if(!isset($_SESSION['user'])){
header('Location: ' . BASE_URL . '/login');
exit();
}
という処理にしました。BASE_URL
にはサイトトップのURLが入っています。
このファイルをすべてのページでrequire_once
すれば、ログインを強制させられます。
このとき、/inc/*
に対する直接アクセスを拒否します。
これについては次回に設定します。
次回:PHPでログインが必要なサイトを作る方法(第2回)