【 PHP学習 #22 】 basic認証 FIREへの旅路 ♯475
こちらの記事で、問い合わせフォームを作成しました。
この内容を一覧で見ることができるようにするのですが、
誰もがアクセスできる状態では、個人情報の問題が出てきます。
そこで、basic認証をかけて、ログインが必要な状態を作ります。
【 basic認証 】
パスワードとログインIDを設定することができます。
■ .htaccess
「 .htacess 」ファイルは、サーバーで様々な処理を行うファイルです。
処理例:
リダイレクト
アクセス切り替え(PC版、スマホ版など)
特定のIPアドレス・プロバイダからのアクセス制限をかける
など
■ Basic認証の手順① 仮ファイル
.htaccessファイルは、アクセス制限がかかるので、
先に必要な情報を別のファイルに書いておきます。
今回は、mainteフォルダを作り、test.phpというファイルに必要な情報を書いています。
必要な情報は、以下の二つです。
① パスワードを記録したファイルの場所
② パスワード(暗号化)
▶︎ 全コード
<?php
//パスワードを記録したファイルの場所
echo __FILE__ ;
echo '<br>';
//パスワード(暗号化)
echo(password_hash('password123', PASSWORD_BCRYPT));
?>
▶︎ 書き方
① パスワードを記録したファイルの場所
<?php
//パスワードを記録したファイルの場所
echo __FILE__ ;
マジック定数の"__FILE__"を使用して、ファイルのパスを取得します。
現時点では、test.phpのパスですが、
最後の部分(test.php)を「 .htaccess 」に書き換えて使います。
② パスワード(暗号化)
<?php
//パスワード(暗号化)
echo(password_hash('password123', PASSWORD_BCRYPT));
パスワードを作るには、password_hashという関数を使います。
▶︎ password_hash
アルゴリズムとは、「問題を解決するための手順や計算方法」という意味です。つまり、アルゴリズムを使って、パスワードを作るということは、特殊な計算方法を使って、文字列を暗号化するということですね。
そして、このアルゴリズムには、
PASSWORD_DEFAULT
PASSWORD_BCRYPT
があります。
今回のコードでは、PASSWORD_BCRYPTを使ってパスワードを作っています。
password_hash('password123', PASSWORD_BCRYPT)
今回は、パスワードを「password123」としました。
これを暗号化してechoしています。
■ Basic認証の手順② ファイルを作る
test.phpにて準備した内容を本ファイルに書いていきます。
Basic認証でのログイン処理に必要なファイルは二つです。
▶︎ .htaccess
AuthType Basic
AuthName "IDとパスワードを入力してください"
AuthUserFile /Applications/MAMP/htdocs/php_test/mainte/.htpasswd
require valid-user
・AuthType Basic
Basic認証をする処理
・AuthName
書いた内容がログインアラートに表示されます
・AuthUserFile
ここに、先ほどのパスを貼り付けて、最後の部分を、htpasswdに書き換えます。htpasswdファイルには、後で、ログインIDとパスワードの情報を入れます。
・require valid-user
ログインしたユーザーのみが中に入れるようになります。
※ 改行
require valid-userを書いたら、「改行」をします。
▶︎ .htpasswd
admin:$2y$10$rOPL4dM5YGasvu9ZejDO/.o6B0s7DrIw6MkPiCa7MeB.yhUlZKHK.
このような形式で書きます。
今回は、ログインIDをadmin としています。
パスワードは、先ほど生成したパスワードをコピペします。
※ 改行
コードを書いたら「改行」をします。
【 ブラウザで確認 】
ブラウザで、test.phpを開くと、
ログインウインドーが開きユーザー名とパスワードを要求されます。
これで、Basic認証が完了しました。
一度ログインすると、次回からこの表示は出ないので、色々試したい場合は、ID名を変えるなどしてしてください。
【 まとめ 】
Basic認証について学びました。
.htaccessファイルは、サーバー管理の重要なファイルでから、扱いに慣れておくことが必要です!
この記事が気に入ったらサポートをしてみませんか?