8768 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Je suis à la recherche d'une solution de redirection avec réactualisation d'une page Web.
Ce qui est mis en place et le problème : Je me déconnecte, j'arrive sur la page qui m'indique que je suis déconnecté dans laquelle je trouve un lien me permettant de revenir vers la page de laquelle je viens. Je clique sur ce lien, mais tout se passe comme si j'étais connecté (la page n'a pas été actualisée).
Pour l'instant j'ai trouvé trois solutions possibles que je souhaiterais faire analyser/compléter ici.

Solution javascript (pas recommandé pour des raisons d'accessibilité et de infinite loop en l'état)
Ajouter une chaîne get à l'adresse permettant de revenir vers la page, tester la valeur de cette chaîne pour ajouter le code suivant dans mon header :
<?php if (GET['deconnected'] == 1]
echo '<script>
   window.location.reload(true);
</script>';
'; ?>
Le problème dans ce cas, vient du fait qu'on va avoir une boucle infinie (puisque la chaîne get sera conservé..).

Solution HTML
Même procédure qu'avant mais on ajoute dans le header ceci :
<?php if (GET['deconnected'] == 1]
echo '<meta http-equiv="refresh" content="0">';
'; ?>

Jamais utilisé cette balise meta, je ne sais pas si elle fonctionne encore avec HTML5. Même problème d'infinite loop ?

Solution PHP
Faire comme dans l'exemple #2 ici : http://fr.php.net/manual/fr/function.header.php
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
?>

Je ne sais pas trop comment procéder pour mettre ça en place... Je mets ce code tout en haut de la page à actualiser. La date d'expiration n'est pas obligatoire je suppose... Des précisions là-dessus ?

Merci d'avance. Smiley smile
Modifié par jojaba (15 Jan 2016 - 05:55)
Modérateur
Bonjour,

Lorsque tu es déconnecté et que tu cliques sur le bouton te permettant de revenir sur la page que tu venais de quitter, qu'est-ce que tu veux obtenir ? Une page de login ?

EDIT : aucune des solutions que tu envisages ne m'ont l'air d'être adaptées à la résolution de ton problème.

Amicalement,
Modifié par parsimonhi (15 Jan 2016 - 09:07)
Modérateur
Non, pas de page de login, simplement le retour se fait sur la page d'accueil du site (domaine donc).
Modifié par jojaba (15 Jan 2016 - 11:03)
les "connexions" se passe avec les $_SESSION en générale. là j'en vois pas, dur de simuler une "deconnection" alors..
salut,
qu'est-ce que tu appelles connecté/déconnecté ? Quels sont les moyens que tu utilises pour ton système de connexion ?

Si non le rafraîchissement en PHP se fait plus simplement :

header('Refresh: 0');
Modérateur
OK, je vous explique un peu mieux.
La connexion se fait à partir d'un CAS (service d'authentification centralisé). L'utilisateur connecté est donc affublé de variables de sessions. Lorsqu'il se déconnecte, on l'envoi vers le CAS à noveau mais avant cela, on supprime les variables de sessions. Lorsque l'utilisateur retourne sur le Blog (qui tourne sous WordPress) pour le moment, il revient vers la page sur laquelle il s'était déconnecté (page administrative de WordPress typiquement). Pas glop ça !
Mon idée était de mettre un lien sur la page de déconnexion CAS permettant de faire revenir l'utilisateur vers la page d'accueil du blog et non sur la page administrative. Ça devrait pouvoir se faire, mais le souci est que lorsqu'on revient sur la page d'accueil du blog, les liens de connexions vers la partie adminsitrative (qui sont affichés dans le footer du blog) ne sont pas actualisés, le bouton "aller à l'admin" s'affiche encore parce que la page n'a pas été actualisée, elle se trouve dans le cache navigateur. Lorsqu'un utilisateur est déconnecté, le texte change en "se connecter" et permet de retourner au CAS pour l'identification.
Dites-moi si j'ai été plus clair.
Modifié par jojaba (15 Jan 2016 - 11:05)
Modérateur
Bonjour,

Oui, tu as été bien plus clair.

Je me demande si l'utilisateur est vraiment déconnecté ?

EDIT : voir aussi la question de Zelalsan plus haut

EDIT : autre question concernant la manière utilisée pour revenir à la page d'accueil : est-ce un lien vers la page d'accueil ou bien utilises-tu du javascript qui va piocher dans l'historique du navigateur ?

Amicalement,
Modifié par parsimonhi (15 Jan 2016 - 11:33)
Modérateur
parsimonhi a écrit :
EDIT : autre question concernant la manière utilisée pour revenir à la page d'accueil : est-ce un lien vers la page d'accueil ou bien utilises-tu du javascript qui va piocher dans l'historique du navigateur ?

Pour l'instant, ce n'est pas mis en place pour la simple raison que ce n'est pas moi qui m'occupe du CAS. Mais ce ne sera pas une solution JavaScript (tant que je peux, j'évite, je souhaite conserver une relative accessibilité à tout ça Smiley cligne ).
Pour info, je n'ai pas vérifié si lorsque l'on redirige l'utilisateur vers la page d'accueil du blog les liens de connexion dont je parle ci-dessus s'affichent effectivement comme je le dis. A la réflexion, je pense que non puisque je teste mes variables de session au début de chaque page publique du blog (j'ai mis ça dans le fichier header.php de WordPress). Je vais voir ça dès que possible et vous tiens au courant. En tout cas cette solution de redirection vers l'accueil du blog serait la plus simple et la plus efficace si je ne me trompe pas dans mes supputations...
Modérateur
Histoire de clore le débat, j'ai trouvé une solution qui tient la route.
Lorsque l'utlisateur se déconnecte via le CAS et qu'il revient vers le site, il est redirigé vers le formulaire de login WordPress. J'utilise le fait que l'adresse de redirection contient la variable GET "redirect" pour rediriger vers l'accueil du site plublic.
Là encore, j'ai pas l'impression d'être assez clair, mais l'essentiel est d'avoir trouvé une solution, hein !
Merci à tous pour la discussion.
Modifié par jojaba (09 Feb 2016 - 15:16)