Basic認証を行う 誤りの指摘やご意見はこちらへ ご意見板
BBS

PHP Top
項目
パスワード保護の準備 ↑項目に戻る
基本的な認証である、BASIC認証をPHPで実現しましょう。
(下記のようなWindowが出て、ユーザ名とパスワードにより認証するものです)



まずは、.htaccessを使い、BASIC認証してみましょう。

サーバ上にsecretというフォルダを作り、「.htaccess」
を以下の内容で作成してください。

AuthUserFile .htpasswd
AuthGroupFile /dev/null
AuthName "PHP Dream Secret Area"
AuthType Basic
require valid-user

これで、secretフォルダは、パスワード保護されました。
レンタルサーバなどをご利用の場合は、.htaccessによりBASIC認証が可能かどうか
確認してください。また、.htaccessの記述に指定がある場合は、指示に従ってください。

パスワードファイルの準備 ↑項目に戻る
次に、ユーザIDとパスワードを管理するファイルを作成しましょう。
htpasswdコマンドを使うのが一般的ですが、ここはPHPで自作してみましょう!

useradd.phpを以下の内容で作成し、secretフォルダの上の階層に設置してください。

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
    <title>ユーザを追加しよう</title>
  </head>
  <body bgcolor="#FFFFFF" text="#006666">
      ユーザ追加フォーム<br>
      <br>
      ID、Passwordを書き込み、<br>
      「送信」ボタンを押してください。<br>
      <br>
      <form method="post" action="useradd.php">
        ID:<br>
        <input type="text" name="ID" value="" size="50" maxlength="256"><br>
        Password:<br>
        <input type="password" name="password" value="" size="50" maxlength="256"><br>
        <br>
        <input type="submit" name="submit" value="送信">
      </form>
      <?php
          $filename = "secret/.htpasswd";
          if (isset($submit)) {
            $contents = $ID. ":". crypt($password, substr($ID, 0, 2));
            $file = fopen($filename,"r");
            $old_contents = fread($file,filesize($filename));
            fclose($file);
            $file = fopen($filename,"w");
            flock($file, 2);
            fwrite($file, $contents);
            fwrite($file, "\n");
            fwrite($file, $old_contents);
            flock($file, 3);
            fclose($file);
            print (htmlspecialchars($ID)."が追加されました");             
          }
      ?>
      <br>
      <br>
      <DIV align="right"><a href="../basic.html">back</a></DIV>
  </body>
</html>

これを実行する前に下準備として、secretフォルダ内に、
touchコマンドで、空の.htpasswdファイルを作成、
chmodコマンドで、書き込み権限を与えてください。

useradd.phpを実行すると、

ユーザ追加フォーム

ID、Passwordを書き込み、
「送信」ボタンを押してください。

ID:

Password:



という画面が出ます。
ここで、 ID,Passwordを入力すると、.htpasswdにID,暗号化されたPasswordが
追加されます!

あとは、secretフォルダにブラウザでアクセスし、
作成したIDとPasswordで認証が通る事を確認してみましょう!

.htaccessはいろいろな使い道があります。
【練習問題】.htaccessに追記して、.htpasswdがブラウザから見えないようにしてみましょう!


↑項目に戻る

PHP Top