web-dev-qa-db-ja.com

ユーザーのログインを確認してログインに送信する方法はありますか?

私は自分のサイト用のプラグインを書きました。「ユーザーがサイトにログインしたらログアウトし、次にブラウザの戻るボタンをクリックするとログインページの代わりに前のページが再度表示される」という問題があります。今回の問題では、以下のJSコードを使用して修正しました。

history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
 history.pushState(null, null, document.URL);
});

ブラウザの戻るボタンの問題は修正されましたが、上記のjsコードを追加した後、ブラウザの戻るボタンが完全に無効になるという新しい問題が発生しました。

テーマfunctions.phpファイルに書き込めるフックはありますか?そのため、ユーザーがログアウト後にブラウザの戻るボタンをクリックした場合にこの問題を解決できますか?誰もがそれを修正する方法を教えてください?

私は以下のものを試しましたが、どちらもうまくいきませんでした:

<script>
   window.onhashchange = function() {
       <?php if( ! is_user_logged_in()) { $this->tewa_login(); } ?>
   }
<script>

誰が私に言うことができるPLZ何が間違っている!

1
Prasad Patel

ユーザー がログアウトすると 、現在のユーザーセッションは破棄され、ユーザーがログインしなければならない新しいページをロードすることはできません。ブラウザの「戻る」ボタン。通常、ローカルキャッシュからページを取得します。現在のセッションがまだ有効かどうかを確認するためのサーバーとの連絡はありません。

そのため、バックスペースボタンが押されたかどうかを検出し、その場合はセッションの有効性を確認します。これは、このアクションがユーザー側で行われる必要があるため、ページに含まれるJavaScriptの一部が存在する必要があることを意味します。私はセキュリティの専門家ではありませんが、バックスペースを検出する一般的な方法は次のようになります。

window.onhashchange = function() {
 .. your action ..
 }

このメソッドには いくつかの不備 があります。今、あなたの行動はサーバーにコールバックすることでなければなりません。その質問 は、以前WPSEで 答えられています。

2
cjbj

@ cjbjの回答のほんの一部です。それはあなたを助けるかもしれません、これが私がこれを書いている理由です。

WordPressの「セッション」は実際にはクッキーです。 wordpress_logged_inで始まります

enter image description here

ログアウトしたら:

enter image description here

それでもリフレッシュすると、クッキーは表示されなくなります。

enter image description here

だからあなたが理解する必要があるもの:

彼がブラウザの戻るボタンをクリックすると、ログインページの代わりに前のページが再び表示されます "#:。

これは問題ではありません、これは正常です。

デフォルトを変更する予定の場合は、JavaScriptページの更新などを使用してみてください。

1
prosti