ページ遷移、クッキー、セッション (7/8)
作成:2010-12-10 09:19
更新:2010-12-10 09:19
更新:2010-12-10 09:19
■ログインしている時だけページを表示する
続いて、index2.phpです。これは、ログインされているかどうかをチェックし、ログイン時だけページを表示させてみます。下にサンプルコードを掲載しておきます。
ここでは、まず@session_startした後、登録ユーザーのアカウントとパスワードを$ok_accountと$ok_passに用意します。そして、$SESSIONからaccountとpassの値をそれぞれ取り出し、値をチェックして、アカウントとパスワードが正しければ、$flgという変数をtrueにしています。これがログインOKかどうかを示す変数で、これがtrueならログインしている、falseならしていないとなります。
ログインしていないときには、echoでエラーメッセージと、index.phpに戻るリンクを主力し、最後に「exit」をしています。これは、「ここでスクリプトの実行をやめる」ためのものです。exitすると、それ以降にあるものはすべて実行されません。PHPのスクリプトのみならず、書かれているHTMLのコードもすべて出力されないのです。つまり、ログインしていないと、ここに用意されたページそのものが表示されなくなる、というわけです。
ここではechoでエラーを書いてexitする、といった対応をしましたが、やり方はもっといろいろとあります。エラーページにリダイレクトしたり、ログインページに戻したりするのもよいでしょう。そのあたりは、いろいろ応用を考えましょう。
ここでは、まず@session_startした後、登録ユーザーのアカウントとパスワードを$ok_accountと$ok_passに用意します。そして、$SESSIONからaccountとpassの値をそれぞれ取り出し、値をチェックして、アカウントとパスワードが正しければ、$flgという変数をtrueにしています。これがログインOKかどうかを示す変数で、これがtrueならログインしている、falseならしていないとなります。
ログインしていないときには、echoでエラーメッセージと、index.phpに戻るリンクを主力し、最後に「exit」をしています。これは、「ここでスクリプトの実行をやめる」ためのものです。exitすると、それ以降にあるものはすべて実行されません。PHPのスクリプトのみならず、書かれているHTMLのコードもすべて出力されないのです。つまり、ログインしていないと、ここに用意されたページそのものが表示されなくなる、というわけです。
ここではechoでエラーを書いてexitする、といった対応をしましたが、やり方はもっといろいろとあります。エラーページにリダイレクトしたり、ログインページに戻したりするのもよいでしょう。そのあたりは、いろいろ応用を考えましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?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; } ?> <!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>
※関連コンテンツ