ページ遷移、クッキー、セッション (8/8)
作成:2010-12-10 09:20
更新:2010-12-10 09:20
更新:2010-12-10 09:20
■ログインチェックの汎用化
一応これでログインした時だけページを表示するような処理ができましたが、すべてのページに、ここに書いたような処理を書いてログインチェックするのは、非効率的です。こうした場合は、ログインチェックのページを用意し、これを各ページから読み込んで実行するようにすることもできます。
下に、簡単なサンプルをあげておきましょう。ここでは「check.php」というファイルをindex.phpなどと同じ場所に作成し、そこにログインチェックの処理を用意します。そして、ログインチェックを必要とするページ(index2.php)では、以下の1文だけを冒頭に記述しておくのです。
ログインシステムの基本は、これでだいたいわかったことでしょう。後は、アカウントやパスワードをもっとしっかりと管理するような仕組みを考えれば、それなりに使えるログインシステムが作れるようになりますよ。
下に、簡単なサンプルをあげておきましょう。ここでは「check.php」というファイルをindex.phpなどと同じ場所に作成し、そこにログインチェックの処理を用意します。そして、ログインチェックを必要とするページ(index2.php)では、以下の1文だけを冒頭に記述しておくのです。
<?php include_once('./check.php'); ?>たったこれだけで、そのページはログインしないと読めなくなります。ここでは「include_once」という関数を利用しています。これは、引数に指定したスクリプトファイルを1度だけ読み込む働きを持ちます。check.phpを読み込むと、その場でスクリプトが実行されるので、ここでログインしていなければエラーが表示されexitされるわけです。当然、このページのinclude_once以降の文も表示されなくなります。
ログインシステムの基本は、これでだいたいわかったことでしょう。後は、アカウントやパスワードをもっとしっかりと管理するような仕組みを考えれば、それなりに使えるログインシステムが作れるようになりますよ。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※check.phpのコード <?php @session_start(); // ACCOUNTとPASS $ok_account = "admin"; $ok_pass = "kanri"; // ログインチェック $flg = false; $account = $_SESSION['account']; $pass = $_SESSION['pass']; if ($account == $ok_account and $pass == $ok_pass){ $flg = true; } // ログインしてないときの処理 if (!$flg){ echo "<html><body><h1>NOT LOGIN!!!</h1>"; echo '<a href="./index.php">back to login page.</a>'; echo "</body></html>"; exit; } ?> ※check.phpを利用するページの例 <?php include_once('./check.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>sample page</title> </head> <body> <h1>Index2.php!</h1> <p>[Account: <?php echo htmlspecialchars($account); ?>]</p> <p>新しく用意したページです。</p> <hr> </body> </html>
※関連コンテンツ