.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 8
.
<< Prev
アップロード関連関数
« INDEX »
PHP WEB要素編
Next >>
メール送信
作成日:2006/05/18

2G HTTP認証

 PHP では HTTP 認証のフックをサポートしています。 PHP スクリプトでは、header() 関数によりステータスコード401(Authentication Required) をクライアントに送ることができます。 これを利用してHTTPの基本認証とダイジェスト認証をPHPスクリプトで実現する事が可能になります。 但し、ダイジェスト認証は PHP 5.1.0 以降でのみ可能です。

HTTP 認証は、PHPを Apache モジュールとして実行した時のみ有効で、CGI 版では利用できません。

2G.1 基本認証

 基本認証では、以下の定義済み変数($_SERVER)を利用します。

変数名説明
$_SERVER['PHP_AUTH_USER']
HTTP認証しているときのユーザー名
$_SERVER['PHP_AUTH_PW']
HTTP認証しているときのパスワード

 基本認証を行うためには、まず header() 関数を使って ステータスコード 401(Authentication Required)WWW-Authenticate フィールドをブラウザに送ります。 すると、ブラウザはユーザー名とパスワードの入力要求 をユーザに求めます。 ここで入力したユーザー名とパスワードはリクエストフィールド Authentication を通してサーバに通知され、 PHPスクリプトでは $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW'] により取得する事ができます。 この時、PHPスクリプトはユーザ認証の処理を行い、成功するとブラウザに望みのリソースを送信します。

サーバがブラウザに送る WWW-Authenticate フィールドの中にはレルム(領域)と呼ばれる認証の範囲を識別するコードを設定します。 ブラウザはレルムに対するユーザー名とパスワードを記憶していて、同じレルムに対しては前回の値を送信する機能があります。 従って、一旦、認証シーケンスが成功すると、再びユーザー名とパスワードを入力する必要はありません。


2G.2 基本認証の例

ATTACHbasic-auth.php
<?php
$passwd = array('guest1'=>'1234','guest2'=>'5678');

$php_auth_user = $_SERVER['PHP_AUTH_USER'];
$php_auth_pw   = $_SERVER['PHP_AUTH_PW'];

if (! isset($php_auth_user) ||
    ! ($passwd[$php_auth_user]==$php_auth_pw) ){

  $auth_realm = "Basic Authorization Test";
  header("WWW-Authenticate: Basic realm=\"{$auth_realm}\"");
  header("HTTP/1.0 401 Unauthorized");
  ?>

<html>
<head><title>401 Authorization Required</title></head>
<body><h1>Authorization Required</h1></body>
</html>

  <?php
  exit();
}
?>

<html>
<body>

<h1>Basic Authorization Test</h1>
PHP_AUTH_USER: <?= $php_auth_user ?><br>
PHP_AUTH_PW: <?= $php_auth_pw ?>

</body>
</html>
<< Prev
アップロード関連関数
« INDEX »>
Page Top
Next >>
メール送信

.