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 :

Script de connexion, je ne sais pas ce qui bugge [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut Script de connexion, je ne sais pas ce qui bugge
    Bonjour à vous tous,
    je suis a la création d'un jeu en PHP, et il y a un bug au script de connexion :
    L'utilisateur arrive sur une page, et remplis ce formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h1>CONNECTION</h1>
    <form action="connection.deb.sec.php" method="post">
    Pseudo :<br />
    <input type="text" name="pseudo"><br />
    Mot de passe :<br />
    <input type="text" name="passe"><br />
    <input type="submit" value="Envoyer" name="B1"><br />
    </form>
    les données sont envoyées sur cette page :
    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
    40
    41
    42
    43
    <?php 
     
    require("bdd.sec.php3");
     
    $pseudo = $_POST['pseudo']; 
    $passe = $_POST['passe']; 
     
    $db_link = mysql_connect($sql_serveur, $sql_user, $sql_passwd);
    mysql_select_db($sql_bdd, $db_link);
    $requete1=mysql_db_query("SELECT pseudo,passe FROM membre WHERE pseudo='".$pseudo."' AND passe='".$passe."'", $db_link);
    $data = mysql_num_rows($requete1);
     
     
    if ($data==0) 
    {
    header("Location:index.php3?erreur=connexion");
    }
     
    else 
    {
    $requete = "SELECT * FROM membre WHERE pseudo='$pseudo' AND passe='$passe'";
    $reponse = mysql_query($requete);
    $data = mysql_fetch_array($reponse); 
    $cite = $data["cite"];
    $passe = $data["passe"];
    $email = $data["email"];
    $age = $data["age"];
     
    mysql_close();
     
    $timestamp_expire = time() + 600; // Le cookie expirera dans 10 minutes
     
    setcookie('pseudo', $pseudo , $timestamp_expire);
    setcookie('cite', $cite , $timestamp_expire); 
    setcookie('passe', $passe , $timestamp_expire);
    setcookie('email', $email , $timestamp_expire);
    setcookie('age', $age , $timestamp_expire);
     
    header("Location:accueil.jeu.php3");
     
    }
     
    ?>
    Le problème est que une fois qu'on a mi un bon pseudo et un bon mot de passe, il ne s'affiche rien, et on reste sur la page "connection.deb.sec.php".
    J'ai alors essayé de mettre le header location en commentaire, et d'afficher erreur a la place, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($data==0) 
    {
    echo "erreur";
    //header("Location:index.php3?erreur=connexion");
    }
    effectivement, c'est bien "erreur" qui s'affiche, mais le pseudo et le mot de passe sont bons !
    j'ai pensé a une erreur dans la table MySQL, mais la voici :
    Type pseudo cite passe email age
    dond franchement je voie pas, j'ai déjà demandé de l'aide a des amis très bon en dévellopement php, mais rien n'y fait... vous auriez une idée ?

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    utilise mysql_query au lieu de mysql_db_query

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    merci mais j'ai déjà essayé...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    personne n'a d'idée :'( on a déjà tellement cherché...

  5. #5
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    essaye ça..

    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
     
    $req = SELECT pseudo,passe FROM membre WHERE pseudo='".$pseudo."' AND passe='".$passe."'";
    if ($requete1 = mysql_query ($req) or die (mysql_error()))
     {
    $machin = mysql_fetch_array($requete1);
     
    if (($machin['pseudo'] == $pseudo) && ($machin['mdp] == $mdp))
    {
    header("Location:accueil.jeu.php3");
    }
    }
    else
    {
    header("Location:index.php3?erreur=connexion");
    }
     
    mysql_close();
    sinon pour le reste je comprends pas trop ce que tu veux faire.
    c'est bien du code pour identification pseudo + mdp que tu veux faire?

  6. #6
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    sinon

    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
    40
    41
    42
    43
     
     
    $requete1=mysql_db_query("SELECT pseudo,passe FROM membre WHERE pseudo='".$pseudo."' AND passe='".$passe."'");
     
    $req = mysql_query ($requete1) or die (mysql_error());
     if($req)
     {
    $machin = mysql_fetch_array($req);
     
    if($machin)
        {
       if ($requete = "SELECT cite,  email, age FROM membre WHERE pseudo='$pseudo' AND passe='$passe'")
    {
     
     $res = mysql_query($requete);
    while($data = mysql_fetch_array($res))
    {
    $cite = $data["cite"];
    $email = $data["email"];
    $age = $data["age"];
     
    header("Location:accueil.jeu.php3");
     
     
    $timestamp_expire = time() + 600; // Le cookie expirera dans 10 minutes
     
    setcookie('pseudo', $pseudo , $timestamp_expire);
    setcookie('cite', $cite , $timestamp_expire); 
    setcookie('passe', $passe , $timestamp_expire);
    setcookie('email', $email , $timestamp_expire);
    setcookie('age', $age , $timestamp_expire);
     
    }
    }
    }
    }
     
    else 
    {
    header("Location:index.php3?erreur=connexion");
    }
     
    mysql_close();
    j'ai certainement fait des erreurs,mais je pense que c'est dans ce style là..

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour voir s'il ya des erreurs mysql , à chaque instruction rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    or die('Erreur :'.mysql_error());
    Donc pour ton code ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $db_link = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or die('Erreur :'.mysql_error());
    mysql_select_db($sql_bdd, $db_link) or die('Erreur :'.mysql_error());
    $requete1=mysql_db_query("SELECT pseudo,passe FROM membre WHERE pseudo='".$pseudo."' AND passe='".$passe."'", $db_link) or die('Erreur :'.mysql_error());
    $data = mysql_num_rows($requete1) or die('Erreur :'.mysql_error());

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    merci pour toutes vos réponses, mais j'ai encore une question :
    maintenant, le script me retourne simplement le mot "Erreur :".
    Est-ce la fonction mysql_error qui retourne ça ?
    Pour vérifier si le problème provient de la base de données, j'ai rajouter cette ligne juste après mysql_select_db :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier de configuration"; exit;}
    mais cela m'affiche toujours "Erreur :" alors que je n'ai aucun "echo" qui peut renvoyer ça..
    C'est peut-être la table qui est fausse, parce que la connexion à la BDD fonctionne.
    J'ai aussi testé quelque chose : j'ai mit un echo devant la requête mysql, pour voir si il va chercher les bonnes données dans la base mysql, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "SELECT cite, email, age FROM membre WHERE pseudo='$pseudo' AND passe='$passe'";
    et voilà ce qu'il me retourne :
    SELECT cite, email, age FROM membre WHERE pseudo='prophecy' AND passe='**' (le mdp est exact)
    et il m'affiche toujours "erreur :"

  9. #9
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    On peut voir ton code parce que là avec toutes les propositions on ne sait pas quelle tête il a...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    oki le voici :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php 
     
    require("bdd.sec.php3");
     
    $pseudo = $_POST['pseudo']; 
    $passe = $_POST['passe']; 
     
     
    $db_link = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or die('Erreur :'.mysql_error());
    mysql_select_db($sql_bdd, $db_link) or die('Erreur :'.mysql_error());
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier de configuration"; exit;}
     
     
    $requete1=mysql_db_query("SELECT pseudo,passe FROM membre WHERE pseudo='".$pseudo."' AND passe='".$passe."'") or die('Erreur :'.mysql_error());
     
    $req = mysql_query ($requete1) or die (mysql_error());
     if($req)
     {
    $machin = mysql_fetch_array($req);
     
    if($machin)
        {
       if ($requete = "SELECT cite, email, age FROM membre WHERE pseudo='$pseudo' AND passe='$passe'")
    {
     
     $res = mysql_query($requete);
    while($data = mysql_fetch_array($res))
    {
    $cite = $data["cite"];
    $email = $data["email"];
    $age = $data["age"];
     
     
     
    $timestamp_expire = time() + 600; // Le cookie expirera dans 10 minutes
     
    setcookie('pseudo', $pseudo , $timestamp_expire);
    setcookie('cite', $cite , $timestamp_expire); 
    setcookie('passe', $passe , $timestamp_expire);
    setcookie('email', $email , $timestamp_expire);
    setcookie('age', $age , $timestamp_expire);
    header("Location:accueil.je.php3");
     
    }
    }
    }
    }
     
    else 
    {
    header("Location:index.php3?erreur=connexion");
    }
     
    mysql_close();
    ?>

  11. #11
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je parle dans le vent ?
    Utilise mysql_query au lieu de mysql_db_query !

    ou alors regarde le prototype de la fonction car il te manque un parametre...

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    ah oui merci, c'est bizarre avant j'avait essayé de remplacer par mysql_query et ca avait pas marché...
    Mais aussi je m'y connais pas trop en erreurs SQL, et maintenant il me met ca comme erreur, cela provient surement d'un mysql_error :

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #9' at line 1

  13. #13
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tu appelles un mysql_query sur un résultat de mysql_query...
    Je sais que c'est vendredi, mais quand même, un peu de sérieux !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    oups
    c'est quasiment bon, quand le pseudo & mdp sont corrects, ca renvoie vers la page cachée, et les cookies ont étés créés.
    Avec pseudo & mdp faux, ca ne marche pas
    avec pseudo faux & mdp bon, ça ne marche pas
    avec pseudo bon & mdp faux ca ne marche toujours pas
    Donc tout marche pour la connexion, mais il reste un tout pitit problème : Il ne redirige pas vers la page d'erreur quand le pseudo et/ou le mdp sont faux...
    j'ai donc rajouté juste avant la redirection :
    echo "erreur !";
    mais rien ne s'affiche... j'ai beau regarder je vois rien

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    c'est bon j'ai résolu le problème, je vous remercie tous énormément pour votre aide précieuse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 10/11/2011, 00h40
  2. Création d'un script, je ne sais pas comment l'aborder
    Par qualifio dans le forum Développement
    Réponses: 9
    Dernier message: 19/05/2011, 14h39
  3. pb dans mon script, je sais pas comment faire
    Par gengiskhan72 dans le forum C
    Réponses: 5
    Dernier message: 30/06/2009, 20h16
  4. script de connexion par ssh
    Par black_code dans le forum Modules
    Réponses: 2
    Dernier message: 25/07/2005, 15h10

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