PHPでログインが必要なサイトを作る方法(第1回)


こんにちは、片山学園 鉄道研究会です。

実は、鉄道研究会では部員専用サイトを作っています。

こんな感じなんですが、当然見るためにはログインが必要です。

このサイトではApache+PHP+SQLite+Bootstrap+jQueryといった、結構普通の技術を使ってログイン機能を作っています。

それでは、具体的な作り方を紹介していきます。

ログインをさせるための設定

どのページにアクセスしてもログインさせるためには、ページがリクエストされたときに、

  • ログインしているか判定
  • ログインしてなかったらログインページに飛ばす
  • ログインしていたらページを表示

といった処理をする必要があります。

このサイトでは、すべて共通のファイルを最初に読み込んで、そのファイルでこれらの処理を行っています。

このとき大切なこととして、
絶対にログインページではこの処理をしてはいけないということです。

なぜなら、

  1. ログインページにアクセス
  2. ログインしているか判定
  3. ログインしてないのでログインページにリダイレクト(1に戻る)

の無限ループが起こるからです。自分もここではまりました。

このサイトではログインしているユーザー名を$_SESSION['user']に保存しているので、

/inc/auth.php
if(!isset($_SESSION['user'])){

    header('Location: ' . BASE_URL . '/login');

    exit();

}

という処理にしました。BASE_URLにはサイトトップのURLが入っています。

このファイルをすべてのページでrequire_onceすれば、ログインを強制させられます。

このとき、/inc/*に対する直接アクセスを拒否します。
これについては次回に設定します。
次回:PHPでログインが必要なサイトを作る方法(第2回)