web-dev-qa-db-fra.com

Existe-t-il un moyen de vérifier la connexion de l'utilisateur et de l'envoyer?

J'ai écrit un plugin pour mon propre site dans lequel j'ai un problème du type "après que l'utilisateur se soit connecté au site s'il se déconnecte, puis à nouveau s'il clique sur le bouton Précédent du navigateur, puis la page précédente s'affichant à nouveau au lieu de la page de connexion". pour ce problème je l'ai corrigé en utilisant le code js ci-dessous:

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

Le problème du bouton de retour du navigateur a été corrigé, mais après l’ajout du code js ci-dessus, j’ai eu un nouveau problème: le bouton de retour du navigateur a été totalement désactivé. Que faire si l’utilisateur souhaite utiliser le bouton de retour du navigateur pour naviguer dans les pages Web du site?

Y a-t-il un crochet que je peux écrire dans le fichier functions.php du thème? afin que je puisse résoudre ce problème si l'utilisateur clique sur le bouton Précédent du navigateur après la déconnexion? Quelqu'un peut-il me dire s'il vous plaît comment y remédier?

J'ai essayé celui ci-dessous mais ça ne marche pas non plus:

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

quel est le problème plz quelqu'un peut-il me dire!

1
Prasad Patel

Lorsqu'un utilisateur se déconnecte , la session actuelle de l'utilisateur est détruite et aucune nouvelle page ne peut être chargée pour laquelle un utilisateur doit être connecté. Cependant, lorsque vous cliquez sur le bouton "retour" de votre navigateur, il récupère généralement la page à partir du cache local. Il n'y a pas de contact avec le serveur pour voir si la session en cours est toujours valide.

Vous devez donc détecter si le bouton de retour arrière a été activé et, dans ce cas, vérifier la validité de la session. Cela signifie qu'il doit y avoir un morceau de javacript inclus dans la page, car cette action doit avoir lieu du côté de l'utilisateur. Je ne suis pas un expert en sécurité, mais la méthode habituelle pour détecter le retour arrière est la suivante:

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

Il y a quelques accrocs à cette méthode. Maintenant, votre action doit être de rappeler le serveur. Cette question a déjà reçu une réponse ici sur WPSE.

2
cjbj

Juste quelques appendices à la réponse @cjbj. Cela peut vous aider, c'est pourquoi je vous écris ceci.

WordPress "session" est en fait un cookie. Cela commence par wordpress_logged_in

enter image description here

Une fois que vous vous déconnectez:

enter image description here

Une fois que vous aurez rafraîchi, il n'y aura plus de cookie:

enter image description here

Donc, ce que vous devez comprendre:

s'il clique sur le bouton Précédent du navigateur, la page précédente s'affiche à nouveau au lieu de la page de connexion ".

Ce n'est pas un problème, c'est normal.

Si vous envisagez de modifier la valeur par défaut, essayez d’utiliser l’actualisation de la page JavaScript ou autre.

1
prosti