Maison  >  Article  >  développement back-end  >  Comment rediriger les utilisateurs vers leur page précédente après une connexion réussie ?

Comment rediriger les utilisateurs vers leur page précédente après une connexion réussie ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 04:45:02750parcourir

How to Redirect Users Back to Their Previous Page After Successful Login?

Redirection vers la page précédente après une connexion réussie

Lorsqu'un utilisateur se connecte à un site Web, il est souvent souhaitable de le rediriger vers la page sur laquelle il parcourait précédemment. Cela offre une expérience utilisateur transparente et élimine le besoin de navigation manuelle après la connexion.

Pour atteindre cet objectif, une approche courante consiste à transmettre l'URL de la page actuelle de l'utilisateur en tant que variable $_GET au formulaire de connexion. Par exemple, si un utilisateur se trouve sur la page de l'article "comment.php?articleid=17" lorsqu'il tente de laisser un commentaire, l'URL inclura l'emplacement actuel.

La page de connexion (login.php) devrait alors vérifier la présence de $_GET['location']. Si elle existe, la page peut rediriger l'utilisateur vers cette URL spécifique après une connexion réussie. Voici comment vous pouvez l'implémenter :

Dans login.php :

<code class="php">echo '<input type="hidden" name="location" value="';
if(isset($_GET['location'])) {
    echo htmlspecialchars($_GET['location']);
}
echo '" />';</code>

Ce champ de saisie masqué stocke l'URL de la page actuelle et l'envoie avec la soumission du formulaire de connexion.

Dans login-check.php :

<code class="php">session_start();

$redirect = NULL;
if(isset($_POST['location']) && $_POST['location'] != '') {
    $redirect = $_POST['location'];
}

if((empty($username) OR empty($password) AND !isset($_SESSION['id_login']))) {
    $url = 'login.php?p=1';
    if(isset($redirect)) {
        $url .= '&amp;location=' . urlencode($redirect);
    }
   header("Location: " . $url);
   exit();
}
elseif (!user_exists($username,$password) AND !isset($_SESSION['id_login'])) {
    $url = 'login.php?p=2';
    if(isset($redirect)) {
        $url .= '&amp;location=' . urlencode($redirect);
    }
   header("Location:" . $url);
   exit();
}
elseif(isset($_SESSION['id_login'])) {
    if($redirect) {
        header("Location:". $redirect);
    } else {
        header("Location:login.php?p=3");
    }
    exit();
}</code>

Dans ce script login-check.php :

  1. Il vérifie la variable $_POST['location'] et attribue vers $redirect s'il existe.
  2. Le script gère les erreurs de connexion et redirige vers la page de connexion avec le paramètre d'erreur approprié.
  3. Une fois la connexion réussie, il vérifie l'URL de redirection et redirige l'utilisateur à cette page si elle est présente. Sinon, il redirige vers login.php avec un message de connexion réussie.

Ce mécanisme permet une redirection fluide vers la page que l'utilisateur parcourait avant la connexion, améliorant ainsi l'expérience utilisateur et simplifiant le processus de connexion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn