お世話になっております。
ワードプレスの特定のページのみでベーシック認証をかけ、
ログアウトボタンを押したらログアウトする、という機能を実装しています。
テストとしてサーバー(mixhost)にあげている適当なサイトで実装してみたらちゃんと機能したのですが、
ローカルで実装してみたところ、ログアウト機能がうまくいきません。
ログアウト用関数の呼び出しまではできているようなのですが、
ajaxがうまくいってない?のか、401が返ってこない状態です。
コンソールでは特にエラーは出ていません。
特定ページにベーシック認証をかけるのには、こちらのページを参考にしました。
ログアウトはいろんなサイトを見たので、忘れてしまいました。。
//head内に以下を追記 <?php if(!is_home()): if(is_page('member-only')): $userArray = array("admin" => "password"); basic_auth($userArray); endif; endif; ?>
jQuery
1jQuery(function ($) { 2 $('#logout-auth').on('click', function () { 3 logoutAuth(); 4 //return false; 5 }); 6}); 7 8 9function logoutAuth() { 10 jQuery.ajax({ 11 type: "GET", 12 url: "/member-only", 13 dataType: 'json', 14 async: true, 15 username: "exist", 16 password: "stupidpassword", 17 // data: '{ "comment" }' 18 }) 19 20 .done(function () { 21 // alert('Error!') 22 window.location = "/"; 23 }) 24 .fail(function () { 25 window.location = "/member-only"; 26 }); 27} 28
//member-only.php <p id="logout-auth" class="btn-download logout" href="">ログアウト</p>
//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>"; }
ローカルで動かすにはローカル用の書き方があるのでしょうか。
どうしたらログアウトできるようになるのか、ご教示いただけましたら幸いです。
回答1件
あなたの回答
tips
プレビュー