BASIC認証とは?
あなたは,
これは上の入力欄にユーザ名を,
最近はセキュリティの関係で,
HTTPヘッダの設定
どんなことに役立つかというと,
これらは通常,
PHPプログラミングを行ううえで知っておきたいのは,
ユーザ名/パスワードは入力されたか
BASIC認証が必要であることを伝える前に,
$_SERVER[ 'PHP_AUTH_USER' ]
という変数が設定されているかどうかで判断します。つまりisset( $_SERVER[ 'PHP_AUTH_USER' ] )
です。
BASIC認証をさせる
もしユーザがまだユーザ名/
header( 'WWW-Authenticate: Basic realm="....."' );
header( 'HTTP/1.0 401 Unauthorized' );
このとき,
メッセージを"Members Only"とした場合の,
ユーザ名/パスワードを照合する
アクセスしたユーザがユーザ名/
ユーザが入力したユーザ名/
ユーザ名 : $_SERVER[ 'PHP_AUTH_USER' ]
パスワード : $_SERVER[ 'PHP_AUTH_PW' ] // 画面に表示すべきでない
会員用のページに移動する
照合の結果,
header( 'Location: 移動先のURL' );
プログラミング例
最後に,
もし入力された内容が間違っていたら,
リスト1 BASIC認証のための処理を行う例
<?php
// BASIC認証が行われたかどうか
if ( !isset( $_SERVER[ 'PHP_AUTH_USER' ] ) ) {
// BASIC認証が必要(realm="..."は入力欄の上に表示させるメッセージ)
header( 'WWW-Authenticate: Basic realm="Members Only"' );
// ステータスコード(Webサーバのアクセス状況をWebブラウザに伝える)
header( 'HTTP/1.0 401 Unauthorized' );
// ここに exit; を記述して,これ以降の処理をしないこともある
} else {
// 入力されたユーザ名とパスワードが正しいかを判断する
// ここでは文字列を直接比較しているが,実際にはデータベース
// など多くのデータを保存できるしくみを用いることが多い
if ( $_SERVER[ 'PHP_AUTH_USER' ] == 'username' &&
$_SERVER[ 'PHP_AUTH_PW' ] == 'password' ) {
// メンバー用のページにリダイレクト
header( 'Location: members.php' );
} else {
// アクセスが許されないことをWebブラウザに知らせる
header( 'HTTP/1.0 403 Forbidden' );
// 以降の処理を行わない(画面を表示しない)
exit;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>PHPによるBASIC認証</title>
</head>
<body>
<h3>PHPによるBASIC認証</h3>
<p style="font-weight : bold; color : red;">ユーザ名とパスワードを正しく入力してください</p>
</body>
</html>
パスワードは保存時に暗号化
パスワードがどのように保存されているかは,
もしパスワードを入力されたそのままの状態で保存してしまっていると,
そのため,