PHP - Redirection

Résolu
Bonjour,

Après le test du login et du pass entré par l'utilisateur, qu'ils soient corrects ou no, je fais une redirection avec un "header"...

Cependant, par exemple, lorsque les login et pass sont erronés, je souhaite afficher un message indicant que les login et pass sont erronés.

C'est pourquoi, je voudrais savoir s'il est possible de savoir si l'on vient d'être redirectionner, ce qui me permettrais de mettre un "if" pour faire afficher le message.

Merci d'avance
Configuration: Windows XP
Firefox 2.0.0.14

6 réponses

Résumé de la discussion

Le fil porte sur l’authentification en PHP : après vérification des identifiants, on redirige par header et l’on cherche à afficher un message si le login ou le mot de passe est incorrect. Plusieurs solutions évoquées privilégient l’usage d’un code d’erreur stocké en session ($_SESSION['erreur']) ou le passage d’un indicateur via l’URL pour déclencher le message sur la page de connexion. D’autres retours indiquent aussi d’éviter d’émettre des headers après avoir envoyé du contenu et d’utiliser $_SERVER['HTTP_REFERER'] pour revenir à la page et afficher clairement l’erreur. En pratique, la solution robuste consiste à stocker l’état d’erreur dans la session avant la redirection et à le lire ensuite sur la page de connexion.

Bobot (l’IA à votre service)
  1. tu peut tout simplement faire un header avec une page ou il y a marque un des champs est vide
    0
    1. oui, mais si les champs sont remplis mais incorrects ? ? ?
      0
  2. Bonjour.

    Tu peux utiliser la variable de session : $_SESSION[].
    Personnellement, je met le "code" d'erreur dans $_SESSION['erreur'], ce qui me permet de l'utiliser après...

    Un exemple de script de vérification :
    $_SESSION['erreur'] = 0;
    $origine = $_SERVER['HTTP_REFERER']; // Récupère la page d'origine
    /* Là, tu fais comme tu le sens.
    C'est juste un exemple : 
    s'il y a une erreur dans le login/mot de passe, 
    on met $_SESSION['erreur'] à 1.
    Tu pourrais utiliser plusieurs valeurs, pour avoir un message différent suivant l'erreur
    (mail, login vide, login inexistant, etc.
    */
    $_SESSION['erreur'] = TesterConnexion($login, $motdepasse) ;
    if ($_SESSION['erreur'] == 0) {
    // Ici, le code si tout est OK
    }
    else {
    // Ici le code en cas de problème
    header($origine);
    }


    Et comme tu gardes tes variables de session, tu peux utiliser le code d'erreur dans la prochaine page - genre, si tu reviens à la page de connexion, mettre un message pour dire ce qui cloche (tu peux aussi travailler avec une chaîne de caractère qui contient le message d'erreur, ou rien s'il n'y a pas d'erreur...)
    0
    1. Tu es sûr, enfin, je ne doute pas de toi, mais peut-on utiliser des variables de session sans ouvrir un session ? ? ?
      0
    2. @nino11:-O

      Non, évidemment...
      Si tu n'utilises pas de session, c'est vrai que c'est mort !
      Peut-être en passant le code d'erreur en paramètre de la page (monurl.php?err=0) ?
      0
    3. @macgawelje peux pas récupérer la variable par la méthode POST ? ? ?

      Si j'utilise un champ de type hidden avec une valeur 0, ensuite je la récupère, je fais le test, je lui donne la valeur 1 si c'est pas bon et comme je reviens sur mon formulaire, cette variable $_POST['error'] me permet de faire afficher un message, ensuite comme les champ hidden à une valeur à 0, ça me fait une boucle ? ? ? Qu'en penses-tu ?
      0
    4. @nino11on m' ignore a ce que veut vois

      tcho
      0
    5. @Utilisateur anonymenon, on ne t'ignore pas pakat, mais j'appronfondis l'autre méthode ^^
      0
  3. if (empty($_POST["Le nom"]))

    {
    header("Location: formulaireerror.php");
    }
    essaye avec sa pour moi sa marche
    0
    1. envoi ton code c plu simple pour nous je pense
      0
      1. Lol alors sa marche pas( enfin je pense pas mais on c jamais )
        0