ページ遷移、クッキー、セッション (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>
※関連コンテンツ