ベーシック認証を簡単に設置出来るphpツール作りました。
なんで作ったのか?
大抵のレンタルサーバーで、ベーシック認証を設置する場合、
- .htasswdの設置パスを調べる(php置いてpathinfo()とか)
- 「ベーシック認証 作成」でググる
- .htaccess&.htpasswd 作成サービス見つけてクリック
- id/pass入れて.htaccessと.htpasswd生成
- ローカルに.htaccessと.htpasswdを保存
- .htaccessと.htpasswdをベーシック認証設置したいフォルダにftpでアップロード
という流れがほとんどでした。sshできないとこうなりますよね。
決して難しくはないけど、.htpasswdの設置パスを調べるのが、意外と面倒だったりします。そこで、もうちょっとこのフローを簡単にしようじゃないかということで作ってみました。
ベーシック認証設置方法
今回作成したツールの使い方です。
- ここのソースをダウンロード。Download Gistをクリック
- 解凍して出来たphpファイルを、ベーシック認証設置したいフォルダにftpアップロード
- ブラウザからこのファイルにアクセスして、id/passを登録
以上です。簡単でしょ?
完了したら、アップロードしたmake_basic.phpは不要なので削除してください。
当然ですが、動作環境としてphpが動く環境が前提になっています。いくつかのレンタルサーバでは試して問題なかったのですが、みなさまの環境で動かなかったりしたら@papettoTVまでご連絡ください。
以下がソース
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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をいい感じにしてくれるはず。。。|д゚)チラッ
あと、すごい今さら感のあるツールなので、もっとええのあるなら教えてください。(ググらない勇気