いつもお世話になっております。
ワードプレスの特定の固定ページにベーシック認証をかけたのですが、
認証のダイアログも表示されずにすぐキャンセルとなってしまいます。
ローカルと、別のサーバーで動作を確認したコードなのでコード自体は間違っていないはず、
と思うのですが、先ほどテストでサブドメインにあげてみたところ、上記のような挙動になってログインできなくなりました。。
うまく行った時と違うのは、ドメイン直下ではなくサブディレクトリにWPをインストールしたということくらいなのですが(URLはドメイン直下で表示されるように変更しました)、
それでベーシック認証が勝手にキャンセルされたりするのでしょうか。
追記 === 以下のようなエラーがログに出ておりました
PHP Warning: Cannot modify header information - headers already sent by (output started at /home/.サーバー内ディレクトリ./wp/wp-content/themes/_s/header.php:14) in /home/.サーバー内ディレクトリ./wp/wp-content/themes/_s/functions.php on line 289
追記ここまで ========
コードは以下になります。
//header.php <head> <?php if(!is_home()): if(is_page('member-only')): $userArray = array("admin" => "password"); basic_auth($userArray); endif; endif; ?>
//functions.php function basic_auth($auth_list,$realm="Restricted Area"){ if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){ if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){ return $_SERVER['PHP_AUTH_USER']; } } header('WWW-Authenticate: Basic realm="'.$realm.'"'); header('HTTP/1.0 401 Unauthorized'); header('Content-type: text/html; charset='.mb_internal_encoding()); die(home_redirect()); } //ベーシック認証キャンセル時 function home_redirect(){ echo "<script type=\"text/javascript\">alert(\"ログインがキャンセルされました\");</script>"; echo "<script type=\"text/javascript\"> setTimeout(function(){ window.location.href = \"/\"; }, 0*1000); </script>"; }
エラーの内容から、コードの前に空白が無いかや記述位置を確認したのですが、特に問題は無いようでした。
勝手にキャンセルされる原因につきまして、なにかヒントをご教示いただけましたら幸いです。
よろしくお願いいたします。
サーバー:Mixhost
WP:5.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。