.htaccessと.htpasswdの設置
.htaccessと.htpasswdを設置するファイルが以下。
gen.phpと同じ階層に/secretというフォルダを用意し、書き込み可にする。
gen.php:
ユーザ追加フォーム<br> <br> ID、Passwordを書き込み、<br> 「送信」ボタンを押してください。<br> <br> <form method="post" action="gen.php"> ID:<br> <input type="text" name="ID" value="" size="50" ><br> Password:<br> <input type="password" name="password" value="" size="50"><br> <br> <input type="submit" name="submit" value="送信"> </form> <?php print_r($_POST); $filename = "secret/.htpasswd"; $password=$_POST['password']; $ID = $_POST['ID']; if (isset($_POST['submit'])) { $contents = $ID. ":". crypt($password, substr($ID, 0, 2)); // htpasswdファイル設置 $file = fopen($filename,"w"); flock($file, 2); fwrite($file, $contents); fclose($file); // htaccessファイル設置 $file = fopen("secret/.htaccess", "w"); $contents = 'AuthUserFile /path/to/.htpasswd AuthGroupFile /dev/null AuthName "This is user area" AuthType Basic require valid-user '; fwrite($file, $contents); fclose($file); print (htmlspecialchars($ID)."を設置しました"); } ?>
.htaccessの設置場所は/secretの下としているので、/path/to/はそこまでの絶対パス。
これを実行し、IDとpasswordを設定すれば、/secretの中はBASIC認証が要求される。
ちなみにこの.htpasswdファイルは、.htpasswdでなければならず、別の名前では効かない。
参考:http://php.dori-mu.net/basic.html
こちらの参考にしたページではユーザーを追加しているが、本コードでは上書きしている。
ただし、これだけで動かないかもしれない。サーバーのhttpd.confを編集する必要がある場合は以下
rootでhttpd.confをedit
# su
# vi /etc/httpd/conf/httpd.conf
以下のようなセクションがある(コメントは削除してある):
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
ここのAllowOverride NoneをAllowOverride Allに変更