WordPressでphpを使ってログインページにベーシック認証を設定する方法を紹介します。
functions.phpに以下のコードを記述します。
// ログインページにベーシック認証を設定する function basic_auth(){ $hashed_user = "S102K5s7iQP5k"; // 暗号化されたユーザー名 $hashed_password = "k/go2mYcj/8JE"; // 暗号化されたパスワード if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){ if (crypt($_SERVER['PHP_AUTH_USER'], $hashed_user) == $hashed_user && crypt($_SERVER['PHP_AUTH_PW'], $hashed_password) == $hashed_password){ return; } } header('WWW-Authenticate: Basic realm="Restricted Area"'); header('HTTP/1.0 401 Unauthorized'); header('Content-type: text/html; charset='.mb_internal_encoding()); die("Authorization Failed. Contact your administrator." ); } add_action( 'login_init', 'basic_auth' );
暗号化されたユーザー名やパスワードはcrypt()
関数を使って事前に生成しておきます。「mypassword」の部分をユーザー名やパスワードに変更します。「1#」は暗号化に使用する文字列で、任意の2文字を設定します。
echo crypt("mypassword", '1#');
crypt()
関数をオンラインで実行できるツールもあります。
テスト crypt オンライン – cryptographic PHP functions – functions-online (日本語)
「$str」に暗号化したい文字列を、「$salt」に任意の2文字を入力して、「走る」のボタンを押します。「result:」に暗号化された文字列が表示されます。