【WordPres】phpでログインページにベーシック認証を設定する方法

【WordPres】phpでログインページにベーシック認証を設定する方法

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:」に暗号化された文字列が表示されます。

参考