ベーシック認証作成ツール(php)を作った

2014/03/25

ベーシック認証を簡単に設置出来るphpツール作りました。

なんで作ったのか?

大抵のレンタルサーバーで、ベーシック認証を設置する場合、

  1. .htasswdの設置パスを調べる(php置いてpathinfo()とか)
  2. 「ベーシック認証 作成」でググる
  3. .htaccess&.htpasswd 作成サービス見つけてクリック
  4. id/pass入れて.htaccessと.htpasswd生成
  5. ローカルに.htaccessと.htpasswdを保存
  6. .htaccessと.htpasswdをベーシック認証設置したいフォルダにftpでアップロード

という流れがほとんどでした。sshできないとこうなりますよね。
決して難しくはないけど、.htpasswdの設置パスを調べるのが、意外と面倒だったりします。そこで、もうちょっとこのフローを簡単にしようじゃないかということで作ってみました。

ベーシック認証設置方法

今回作成したツールの使い方です。

  1. ここのソースをダウンロード。Download Gistをクリック
  2. 解凍して出来たphpファイルを、ベーシック認証設置したいフォルダにftpアップロード
  3. ブラウザからこのファイルにアクセスして、id/passを登録

以上です。簡単でしょ?

完了したら、アップロードしたmake_basic.phpは不要なので削除してください。
当然ですが、動作環境としてphpが動く環境が前提になっています。いくつかのレンタルサーバでは試して問題なかったのですが、みなさまの環境で動かなかったりしたら@papettoTVまでご連絡ください。
以下がソース

<?php
/*
* ベーシック認証設置ツール
* 1)ベーシック認証掛けたいフォルダにこのファイルを設置してアクセス!
* 2)ユーザ・パスワードを設定後、認証確認出来たら完了です。
*
* バリデーション、ファイルパーミションなど、対応甘いので、改善したい!
*/
?>
<?php
$dir = dirname(__FILE__);
$filename= basename(__FILE__);
if(count($_POST)>0){
$user = $_POST["user"];
$passwd = $_POST["passwd"];
$s = crypt($passwd);
$fp = fopen($dir.'/.htaccess','w');
$basics = array();
$basics[] = '<Files ~ "^\.(htaccess|htpasswd)$">';
$basics[] = 'deny from all';
$basics[] = '</Files>';
$basics[] = 'AuthUserFile '.$dir.'/.htpasswd';
$basics[] = 'AuthGroupFile /dev/null';
$basics[] = 'AuthName "Please enter your ID and password"';
$basics[] = 'AuthType Basic';
$basics[] = 'require valid-user';
$basics[] = 'order deny,allow';
$v=implode("\n",$basics);
fwrite($fp,$v);
fclose($fp);
$fp=fopen($dir.'/.htpasswd','w');
$p=$user.':'.$s;
fwrite($fp,$p);
fclose($fp);
header("Location: ./".$filename);
}
if(file_exists($dir."/.htpasswd")){
$isMaked=true;
}else{
$isMaked=false;
}
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ベーシック認証</title>
<body>
<?php
if($isMaked){
?>
<h1>ベーシック認証設置&認証できました。</h1>
<p>お疲れさまです。これで完了です。</p>
<p>もしこのツールを気に入ったり、改善したいと思ったら、<a href="https://gist.github.com/papettoTV/9659681" target="_blank">ここ</a>を見てみてください。</p>
<p>それと、このファイル(<?php echo $filename; ?>)は不要なので、消しておきましょう。</p>
<?php
}else{
?>
<h1>ベーシック認証設置</h1>
<p>設定したいユーザ名とパスワードを入力してください。</p>
<form action="./<?php echo $filename; ?>" method="post">
ユーザ名:<input type="input" name="user" /><br />
パスワード:<input type="input" name="passwd" /><br />
<input type="submit" value="作成して認証する" />
</form>
<?php
}
?>
</body>
</html>

あと、誰か素敵なデザイナさんが現れてhtmlをいい感じにしてくれるはず。。。|д゚)チラッ

あと、すごい今さら感のあるツールなので、もっとええのあるなら教えてください。(ググらない勇気

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です