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