libro
www.tuyano.com
初心者のためのPHPプログラミング入門

ページ遷移、クッキー、セッション (8/8)

作成:2010-12-10 09:20
更新:2010-12-10 09:20

■ログインチェックの汎用化

一応これでログインした時だけページを表示するような処理ができましたが、すべてのページに、ここに書いたような処理を書いてログインチェックするのは、非効率的です。こうした場合は、ログインチェックのページを用意し、これを各ページから読み込んで実行するようにすることもできます。

下に、簡単なサンプルをあげておきましょう。ここでは「check.php」というファイルをindex.phpなどと同じ場所に作成し、そこにログインチェックの処理を用意します。そして、ログインチェックを必要とするページ(index2.php)では、以下の1文だけを冒頭に記述しておくのです。
<?php include_once('./check.php'); ?>
たったこれだけで、そのページはログインしないと読めなくなります。ここでは「include_once」という関数を利用しています。これは、引数に指定したスクリプトファイルを1度だけ読み込む働きを持ちます。check.phpを読み込むと、その場でスクリプトが実行されるので、ここでログインしていなければエラーが表示されexitされるわけです。当然、このページのinclude_once以降の文も表示されなくなります。

ログインシステムの基本は、これでだいたいわかったことでしょう。後は、アカウントやパスワードをもっとしっかりと管理するような仕組みを考えれば、それなりに使えるログインシステムが作れるようになりますよ。

※プログラムリストが表示されない場合

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>
※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る