[PHP] Transmettre une URL avec plusieurs GET

Résolu/Fermé
Utilisateur anonyme - 25 juin 2010 à 14:43
 Utilisateur anonyme - 25 juin 2010 à 17:19
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

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
25 juin 2010 à 16:45
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
25 juin 2010 à 15:36
utilise header('Location:page?var1=1&var2=2');
0
Utilisateur anonyme
25 juin 2010 à 17:19
Merci, j'ai réussi à faire ce que je voulais grâce à ton conseil =)
Bonne journée à tous.

Dri60
0