smartatさん、こんにちは。
最も確実なのは、サーバーのログを確認することです。
該当のユーザーがアクセスしてきた時間に 403 を出しているエラー箇所を確認し、IP アドレスを確認すれば済む話かと。
サーバーのログが確認できない状況にあるのであれば、海外 IP 制限を一時的に解除し、同様のエラーが報告されるか確認されてみてもよろしいのではないでしょうか。
ログイン時には wp-admin に移動、その後リダイレクトされているので、制限に掛かっている可能性はあると思います。
ご参考になれば。
@shokun0803さん
ありがとうございます。
サーバー側のログですが、403エラー時のIPアドレスまでは取得できていないようです。
WordpressのdebaglogをTrueに設定しているのですが、ログイン時のエラーが出力されていないような気がします、、
以下設定です。
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
define( ‘WP_DEBUG_LOG’, true );
smartatさん、こんにちは。
サーバーのログで確認できないのであれば、ひとつのアイデアではありますが、ログインリダイレクトを実装しているようなので、 return する前にユーザー情報を取得してログファイルに保存してみてはいかがでしょうか。
もしくはユーザーがログイン処理を行った時点でフックして情報を取得するか…例えば wp_authenticate とか?
ご参考になれば。
@shokun0803 さん
ログを出力するphpは書けたのですが、redirectするときにのメソッドがfunction login_redirect_page()のため、ログイン前のユーザー情報がうまくとれていなかったようでした。
ログインに成功した時=ページリダイレクトされた時にはログが取れたのですが、失敗=ページredirectがされない時にはとれず。。
function login_failed()などで試してみましたが、まだうまくいっていない状況です。
別のことで時間が取れておらず、検証ができてませんでした。また時間あるときにいろいろと試します。
上記、ログが取れていないと記述しましたが、確認したところ取れていました。
エラー時のみ情報を取得出来たら一番良いのですが。。現在は、すべてのログが出力されています。。。
もう少し調査してみます。
smartatさん、こんにちは。
・海外IPの制限はしている
これが CORESERVER の物であるとしたら、どうやら管理画面に対して動作するように設定しているようですので、ページは表示されるのに管理画面に移行すると 403 が表示される現象にマッチしているように思えます。
だとするとreturn home_url();
実行前に 404 を返してしまっているようにも思えますが、ログを取得している箇所で、PHP でステータスコードを取得してログに書き出してみてはいかがでしょうか。
これが可能であればステータスコードで分岐もできるはずです。
http_response_code
この辺かなぁ。
もし CORESERVER の海外 IP 拒否だとすると、一瞬でも管理画面を経由するような動作があると 403 を吐き出してしまうかもしれませんね、回避できるのかしら?
ご参考になれば。
@shokun0803 さん
いつもご丁寧にありがとうございます!
下記コードでとりあえずレスポンスコード、IP情報など取得できるようになりました。
※まだエラーは起きていないため、エラー発生時に取得できるかは確認できておりませんが。。
条件分岐については、今後の運用を鑑みて追記していきたいと考えております。
本当にいろいろと詳しく教えていただいてありがとうございました。
function login_redirect_page() {
/*** 各種情報を取得する ***/
//ユーザのIPアドレス
$user_ip = $_SERVER[‘REMOTE_ADDR’];
//ユーザーが閲覧したページのURL
$access_url = $_SERVER[‘REQUEST_URI’];
//アクセス時間
$access_time = date( ‘Y.n.j H:i’ );
/*** 取得した情報をファイルに記録する ***/
//取得した情報を記録するファイルの指定
$file_name = get_stylesheet_directory() .’/login-info.log’;
//ファイルに記録する情報の整理(カンマ「,」で区切る)
$log_contents = http_response_code() . ” , ” . $access_time . ” , ” . $user_ip . ” , ” . $access_url . “\r\n”;
//ファイルに書き込む
file_put_contents($file_name, $log_contents, FILE_APPEND);
return home_url();
}
add_filter(‘login_redirect’, ‘login_redirect_page’);