Ktai Style 作者です。
Ktai Styleを使いたかったのですが、Angsuman’s Authenticated WordPress Pluginと相性が悪いのか、
「Could not open the login page because custom WP_PLUGIN_DIR set.」
というエラーメッセージが出て表示できません。
このメッセージは、WordPress 2.6 以降で、wp-config.php の編集により、プラグインの格納位置をデフォルトである wp-content/plugins 以外の場所に設定しているときに出てきます。この場合、附属ドキュメントを参考にして、ktai_style/wp-load.php を編集する必要があります。
もし、標準の位置から動かしていない場合は、my-hacks.php 等どこかのファイルで WP_PLUGIN_DIR を再定義している可能性があります。Angsuman’s Authenticated WordPress Plugin が原因の可能性は少ないはずですが、このプラグインを停止すると成城動作しますか??
また他にこちら側で発行したID、PWでサイトのアクセスを制限するdocomoで使えるプラグインなどありましたら、ご教授ください。
サイト全体で Basic 認証を行なわせる方法があります。
ご回答ありがとうございます。
Angsuman’s Authenticated WordPress Pluginには、IDとPWを数千件登録しているのですが、プラグインを停止してもその登録しているデータには支障はないでしょうか?
サイト全体で Basic 認証を行なわせる方法
こちらを試して動いたのですが、ログインに失敗すると、
「Bad Password」のメッセージが出て、その後同じログインのURLに行っても「Bad Password」のままになってしまいます。
その際はどのようにすれば、またログイン画面を表示できるようになりますか?
よろしくお願い致します。
Angsuman’s Authenticated WordPress Pluginには、IDとPWを数千件登録しているのですが、プラグインを停止してもその登録しているデータには支障はないでしょうか?
それは当該プラグインの Readme をご確認願います。ID, パスワードをどう保管しているか、停止時にそれらをクリアする実装なのかどうかによります。気になる場合は、データベースおよびサーバー上のファイルをすべてバックアップしてからプラグインを停止させてください。
一応、WordPress のアップデートを行う場合は、すべてのプラグインを停止させることが推奨されているため、プラグインを停止するだけで数千件ものデータを削除するような実装になっていることは、あまり考えられません。
万が一そういう実装になっているならば、それは Angsuman’s Authenticated WordPress Plugin の作りが凶悪と言えるわけで、使い続けるべきでない、とも言えます。
「Bad Password」のメッセージが出て、その後同じログインのURLに行っても「Bad Password」のままになってしまいます。
その際はどのようにすれば、またログイン画面を表示できるようになりますか?
Bad Password のとき、HTTP ヘッダとして 401 を送信してないのがよくなさそうですね。
コードを以下のようにしてみてください。
<?php
global $wpja_site_pass;
$wpja_site_pass = array(
'user_1' => 'pass_1',
'user_2' => 'pass_2',
);
function wpja_force_basic_auth() {
if (! defined('WP_USE_THEMES')) {
return;
}
global $wpja_site_pass;
if (isset($_SERVER['PHP_AUTH_USER']) && array_key_exists($_SERVER['PHP_AUTH_USER'], $wpja_site_pass) && strcmp($wpja_site_pass[$_SERVER['PHP_AUTH_USER']], $_SERVER['PHP_AUTH_PW']) === 0) {
return;
} else {
header('WWW-Authenticate: Basic realm="Please Enter Site Password"');
header('HTTP/1.0 401 Unauthorized');
if (! isset($_SERVER['PHP_AUTH_USER'])) {
echo "Authorization Required";
} else {
echo "Bad Password";
}
exit;
}
}
add_action('init', 'wpja_force_basic_auth');
?>
lilyfanさん、ありがとうございます。
Angsuman’s Authenticated WordPress Pluginのデータの件についてもありがとうございました。
<?php
global $wpja_site_pass;
$wpja_site_pass = array(
‘user_1’ => ‘pass_1’,
‘user_2’ => ‘pass_2’,
);
function wpja_force_basic_auth() {
if (! defined(‘WP_USE_THEMES’)) {
return;
}
global $wpja_site_pass;
if (isset($_SERVER[‘PHP_AUTH_USER’]) && array_key_exists($_SERVER[‘PHP_AUTH_USER’], $wpja_site_pass) && strcmp($wpja_site_pass[$_SERVER[‘PHP_AUTH_USER’]], $_SERVER[‘PHP_AUTH_PW’]) === 0) {
return;
} else {
header(‘WWW-Authenticate: Basic realm=”Please Enter Site Password”‘);
header(‘HTTP/1.0 401 Unauthorized’);
if (! isset($_SERVER[‘PHP_AUTH_USER’])) {
echo “Authorization Required”;
} else {
echo “Bad Password”;
}
exit;
}
}
add_action(‘init’, ‘wpja_force_basic_auth’);
?>
で「Bad Password」の問題はなくなりましたが、一度ログインすると、ブラウザーを閉じてまた開くとログインできてしまいます。
ブラウザーを終了し、また起動した際にはログインが必要となりますが、
上記の場合、再度認証を行わせる方法はありますでしょうか。
よろしくお願い致します。
上記の追加ですが、ログイン後に表示されるサイト内にログアウトのようなシステムのリンクをつけ、それをクリックすると再度認証を行わせるようなことは可能でしょうか?
よろしくお願い致します。
BASIC認証についての知識が不足していたため、追加の質問をしましたが、自己解決しました。
ログアウトなどの概念はないのですね。
また、BASIC認証の導入により、docomoでの接続の問題も解決されました。
ありがとうございました。