Webエンジニア 新人日記

Webエンジニアになりました。元々はCOBOLやらBASICやらでプログラムしてました。C言語やVisualBasicは趣味でやっていましたが、久々に現場復帰ということです。資格はエンベデッドスペシャリスト、DBスペシャリスト、ネットワークスペシャリスト、セキュリティスペシャリスト、システムアーキテクト、プロジェクトマネージャ他を所有

PHPによるログイン管理

PHPによるログイン管理。ページを増やし過ぎないことを念頭にする。

$pwd = array(
	'1'=>'xxxxxxx',	
	'2'=>'xxxxxxx',	
	'3'=>'xxxxxxx',	
	'4'=>'xxxxxxx',	
	'5'=>'xxxxxxx',	
	'7'=>'xxxxxxx',	
	'9'=>'xxxxxxx',	
	'12'=>'xxxxxxx',	
	'14'=>'xxxxxxx',	
	'17'=>'xxxxxxx',	
	'18'=>'xxxxxxx',	
	'21'=>'xxxxxxx',	
	'26'=>'xxxxxxx'	
);

簡単に済ませたいので、ソースにパスワードを埋め込んだと仮定。
本来ならDBに保存しておいて、配列に読み込むとする。
キー値と値の連想配列にしておく。

// エラーメッセージ
$errorMessage = "";

$UserId = htmlspecialchars($_POST["class"], ENT_QUOTES);
$PassWd = htmlspecialchars($_POST["password"], ENT_QUOTES);

エラーメッセージの初期化とPOST変数のエスケープ。

// ログインボタンが押された場合      
if (isset($_POST["login"])) {
    if ($pwd[$UserId] == $PassWd ) {
	// 認証成功
		session_regenerate_id( true );
		setcookie('class', $UserId, time()+3600*24*7);//現在時刻から1週間後
		setcookie('pass', $PassWd, time()+3600*24*7);//現在時刻から1週間後
		header("Location: main.html");
		exit;
	} else {
	//認証失敗時はクッキーを削除
		setcookie('class');
		setcookie('pass');
		$errorMessage = "<strong>パスワードが間違っています</strong>";
	}
}

ログインボタンが押されたならパスワードとユーザーIDのマッチングを行う。
成功ならセッション変数を再生成して、クッキーにユーザーIDとパスワードを設定。



HTML部では

<form id="loginForm" name="loginForm"
 action="<?=$_SERVER['PHP_SELF']?>"
 method="POST">

自分自身を呼び出すように、サーバー変数$_SERVER['PHP_SELF']を使ってactionを設定する。

ボタンは

<input type="submit" id="login" name="login" value="ログイン">

メッセージ用のエリアとして用意しておく。

  <div><?=$errorMessage?></div>