IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

comment renvoyer vers la page d'origine avec un "DIE"


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 85
    Par défaut comment renvoyer vers la page d'origine avec un "DIE"
    Bonjour,
    j'ai fait une page de connexion sur une base de données
    Si la personne existe déjà et essaye de recréer un login et mot de passe
    le message de "die" s'affichera

    J'ai déjà fait quelques tests...sans réussite, comment faire dans ce "die" écrire le message d'erreur et renvoyer la page d'origine d'inscription?

    Merci beaucoup pour votre aide.

    cf ci-dessous mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <html>
    <head></head>
    
    <body>
    <?
    
    include("db_cnx.php3");
    
    $login=$_POST['login'];
    $mot_de_passe=$_POST['password'];
    $mot_de_passe2=$_POST['password2'];
    
    if($mot_de_passe!=$mot_de_passe2) die ("Confirmation du mot de passe incorrecte");
    
    $hdl=mysql_connect($host,$user,$password) or die ("erreur de connexion à MYSQL".mysql_error());
    
    mysql_select_db($bdd) or die ("erreur de connexion à la base");
    
    $query="SELECT login from Utilisateur where login='$login'";
    $resultat=mysql_query($query,$hdl) or die ("erreur de connexion à la base");
    
    
    $nb_lignes=mysql_num_rows($resultat);
    
    if($nb_lignes==1) die ("login déjà existant, veuillez saisir un autre");
    
    
    echo "<script>window.location.replace('inscription.html')</script>";
    
    
    $query="INSERT INTO Utilisateur(login,mot_de_passe) VALUES('$login','$mot_de_passe')";
    $resultat=mysql_query($query,$hdl) or die ("erreur de connexion à la base");
    //echo "Inscription OK";
    echo "<script>alert(\"Vous êtes inscrit, veuillez saisir votre login et mots de passe\")</script>";
    
    echo "<script>window.location.replace('connexion.html')</script>";
    
    
    mysql_close();

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    bonsoir,
    pour autant qu'il n'y ai pas d'impression avant faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($nb_lignes==1) die (header("location:inscription.php?info=1"));
    ou la variable $info de la page inscription.php serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($info==1){print("login déjà existant, veuillez saisir un autre");}

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    comment faire dans ce "die" écrire le message d'erreur et renvoyer la page d'origine d'inscription?
    Disons que procéder ainsi n'est pas logique, car :
    - soit c'est l'un : on affiche un message
    - soit c'est l'autre : on revoie vers la page d'origine.
    En faite, soit on reste là où on est pour afficher un message, soit on va ailleurs (mais pas les 2).

    Aussi, il faut savoir qu'un die() (qui est un alias de exit()) est un point d'arrêt dans le code, c'est à dire que ça stoppera tout net là où il se trouve.
    Donc stopper le script Php et vouloir rediriger après sera impossible.

    Il ne faut pas confondre aussi les codes ou messages d'erreurs propre au codeur/développeur afin de s'aider à débugger, et ceux destinés aux utilisateur (internautes).
    Les die/exit etc ... sont théoriquement destinés au codeur pour dire que l'erreur est suffisamment grave pour l'arrêter, et on profite d'expliquer l'erreur car les die/exit acceptent une chaine (un message).


    Pour ta partie identification, je te propose de procéder autrement, faire l'inverse.
    Donc au lieu de rediriger en cas d'erreur (ce qui complique la gestion des erreurs pour les utilisateurs, entre autre), rediriger uniquement que si l'identification à réussi, ce qui fait donc 1 seul cas.
    En somme, tant qu'il y aura une erreur (telle quelle soit) on reste dans la même page (le formulaire), ceci permettra d'initialiser le message d'erreur adapté, et au bout, un simple echo $messageErr suffit.


    Cependant, et pour pouvoir rediriger (la fonction header), il faudra que les traitements soient effectués avant le moindre echo/print et le moindre élément HTML (<doctype> ou <html>), car ceci provoquera une erreur (très connue).

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/08/2006, 13h01
  2. Réponses: 8
    Dernier message: 24/07/2006, 12h26
  3. Réponses: 13
    Dernier message: 25/05/2006, 04h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo