Bonjour,

Voila j'ai fait pas mal de recherche ^pir avoir un code qui se redige vers la page precedent apres une connexion.
Je vsuis en train de créer un forum et quand un membre se trouve dans un topic et qui sur le bouton "Répondre", si il n'est pas connecté il est directement redifger vers la page de connexion.
Mais pour l'instant j'avais mis le header vers la page d'index du forum.
Apres plusieurs recherches j'ai trouvé la function $_SERVER['HTTP_REFERER']
avec mon code utilisé :

$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '/forum/index.php';
        header('Location: ' . $referer);

Et cela ne fonctionne pas, ca me redirige vers l'index et si j'enlève la condition et je mets seulement le $_SERVER['HTTP_REFERER'] et me redirige.... vers la même pafe en gros la page s'actualise et j'o un message d'erreur du sessesion_start car je suis connecté et je lme trouve coincé vers la page de connexion...

Mais comme le dit si bien la documentation de PHP
---Citation---
L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
---fin de citation---

Vous aurez des solutions pour moi s'il vous plait ?
PS : J'ai egalement vu qu'on peut le faire aussi avec du JavaScript mais je suis un GROS nul en js ^^

2 réponses


Bonjour,
Quand tu valides pour te connecté et que tu es redégiré vers la page de traitement pour la connexion le HTTP_REFERER reprend donc cette page et non cette d'où tu venais avant.

Une solution serait de stocker dans un champ de type hidden de ton formulaire la page d'où tu viens. Ensuite dans le traitement de la connexion, si tout va bien, tu rediriges vers cette page.

Bonjour,

Personellement, je passe le paramètre de retour en $_GET avec un valeur trouver comme ceci :

<form method="" action="pagedaction.php?next_url=<?php echo 'https://'.$_SERVER['SERVER_NAME'].''.$_SERVER['REQUEST_URI']; ?>">

</form>