[PHP] Transmettre une URL avec plusieurs GET [Résolu/Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour,
J'ai créé un espace membres pour mon site, et je souhaite que lorsque l'on se connecte ou se déconnecte, les utilisateurs soient redirigés vers la page d'où ils proviennent (exemple : une personne est sur le forum, il se déconnecte et la page de déconnexion le redirige vers le forum).
J'ai donc mis sur chaque page un lien vers la page de déconnexion comme ceci :
$adresse_r = basename($_SERVER["REQUEST_URI"]);
echo '<a href="mb_deconnexion.php?adr='.$adresse_r.'">Déconnexion</a>';

Et sur la page de déconnexion la redirection :
if(isset($_GET["adr"]))
{ echo '<script type="text/javascript">document.location.replace("'.$_GET["adr"].'");</script>'; }

Le problème est que quand l'adresse de la page d'origine contient plusieurs GET, l'adresse de la page après redirection n'en contient plus qu'un seul, le premier.
Je souhaiterais donc savoir comment faire pour envoyer l'URL à la page de déconnexion avec tous les GET inclus, pour que la redirection puisse se faire correctement.

Merci d'avance =)

Dri60

3 réponses

Messages postés
18555
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 avril 2021
4 284
Salut.

Pour savoir d'où provient un visiteur en PHP, tu peux utiliser la varibale $_SERVER['HTTP_REFERER'].

Pour la page de redirection, il suffit de rediriger l'utilisateur vers la page d'où il provient :
<?php
session_start();
unset($_SESSION['id'], $_SESSION['login']);
$redirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'index.php';
header('Location: '.$redirect);
?>


Pour la page de connexion, quand l'utilisateur arrive dessus et qu'il n'a pas encore saisis ces identifiants, tu peux stocker dans une variable de session l'URL de provenance. Lorsqu'il ce connecte, si c'est OK, il suffit de le rediriger grâce à la variable de session contenant la provenance.
<?php
if(isset($_POST['login']) && isset($_POST['password'])) {
    
    // Si l'utilisateur est bien connecté
    $redirect = $_SESSION['loginRedirect'];
    unset($_SESSION['loginRedirect']);
    header('Location: '.$redirect);
} else {
    if(!isset($_SESSION['loginRedirect'])) {
        $_SESSION['loginRedirect'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'index.php';
    }

    afficherFormulaire();
}
?>
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
125
utilise header('Location:page?var1=1&var2=2');

Merci, j'ai réussi à faire ce que je voulais grâce à ton conseil =)
Bonne journée à tous.

Dri60