PHPを使うことで、ウェブページに簡単な認証機能を付すことができます。
HTTPが提供するBasic認証をりようすることができます。
Basic認証を利用するには、header()関数を使って、
HTTPリクエストの冒頭を構成するヘッダーを送信します。
今回は、ヘッダー名を「WWW-Authenticate」、
値を「Basci realm="realm"」と指定したbasic認証を要求しています。
すると、ユーザーのブラウザに認証画面が表示されて、
ユーザー名とパスワードの入力を求められます。
headerを送信するコードはHTMLよりも前に書かなればいけません。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php if( !isset($_SERVER["PHP_AUTH_USER"]) ){ //ユーザー名が格納されていないときの処理 //認証画面を表示する header("WWW-Authenticate: Basic realm=\"realm\""); header("HTTP/1.0 401 Unauthorized"); //キャンセルボタンで処理を中止する exit("401 Unauthorized"); }else{ if($_SERVER["PHP_AUTH_USER"] != "admin"){ //ユーザー名が格納されているが、admin以外のときの処理 //認証画面を表示する header("WWW-Authenticate: Basic realm=\"realm\""); header("HTTP/1.0 401 Unauthorized"); //キャンセルボタンで処理を中止する exit("401 Unauthorized"); } } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>PHP認証をやってみる</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php $ken = array("東京","横浜","大阪","名古屋","千葉"); ?> <h2>町の名前</h2> <form> <select name="ken"> <?php foreach( $ken as $name => $value ){ echo "<option value={$value}>{$value}</option>"; } ?> </select> </form> </body> </html> |
今回は、ユーザー名を「admin」と表示したときのみページを表示ます。
キャンセルボタンを押した場合、admin以外を入力した場合は、
その応答として、「401 Unauthorized」を送信して処理を
終了するようにしてます。
ユーザー名を調べるには、$_SERVER["PHP_AUTH_USER"]を使います。
パスワードは$_SERVER["PHP_AUTH_PW"]を調べます。
実際にこういうシステムを構築するには、ユーザー名とパスワードを
チェックしたり、暗号化された認証を利用する高度なものが必要です。
Xampp上では、上記でできますが、契約しているサーバーによっては
別の手順が必要です。ロリポップではできません。
$_SERVER["PHP_AUTH_USER"]の値を取得できません。]