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 (espace membre) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut Script de connexion (espace membre)
    Bonjour à tous,

    Je débute en PHP et je dois réaliser une appli débutant par la mise en place d'un système de login.

    Ma base se nomme test1, ma table table1.
    Je dois donc m'assurer que le champ "pass" est associé au champ"nom".
    Une erreur se produit à l'exécution de mon script de connexion que 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
    <?php
    //Déclaration des paramètres de connexion
    $serveur="localhost";
    $bd="db";
    $utilisateur ="root";
    $motdepasse="";
     
    //Connexion au serveur
    $connex = mysql_connect($serveur, $utilisateur, $motdepasse) or die ("erreur de connexion au serveur");
    mysql_select_db($login) or die ("erreur de connexion à la base de données");
     
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete)
    $ligne=mysql_fetch_array($resultat);
     
    	$nom = $ligne['nom']
    	$pass = $ligne['pass']
     
    if ($nom==$_POST['nom']&&$pass==$_POST['pass'])
    	{
    	session_start();
    	echo "OK"
    	}
    	?>
    L'erreur relevée est la suivante :
    Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\test1\controlelogin.php on line 14
    Celà renvoie donc à la ligne
    $ligne=mysql_fetch_array($resultat);
    .

    Est-ce un problème lié au nom de la base ? Dans mon fichier C:\wamp\bin\mysql\mysql5.0.51b\data\test1 le nom de la base semble être "db.opt", c'est bien celui-ci que je dois déclarer au début de mon script ?
    $bd="db";

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Il manque un ; a cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat=mysql_query($requete)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    bonjour,
    je pense que ta connexion se passe bien car tu aurais sinon le message d'erreur "erreur de connexion à la base de données" comme tu l'as demandé par ton code

    ce qui me dérange c'est que tu demandes à faire une requete meme si les post sont vides ... comme il n'y a pas de valeurs il y a une erreur de requetage ..
    peux tu tester de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ((!empty($_POST['nom'])) && (!empty($_POST['pass']))){
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete)
    $ligne=mysql_fetch_array($resultat);
     
    $nom = $ligne['nom']
    $pass = $ligne['pass']
     
    if ($nom==$_POST['nom']&&$pass==$_POST['pass'])
    {
    session_start();
    echo "OK"
    }}

  4. #4
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    En effet, il manquait un ;

    Je viens de corriger mon code, il semble s'exécuter, mais à la connexion, je reçois ce message : "erreur de connexion à la base de données"

    Est-ce un problème lié au nom de ma base, qui ne serait pas le bon ?


    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
    <?php
    //Déclaration des paramètres de connexion
    $serveur="localhost";
    $bd="db";
    $utilisateur ="root";
    $motdepasse="";
     
    //Connexion au serveur
    $connex = mysql_connect($serveur, $utilisateur, $motdepasse) or die ("erreur de connexion au serveur");
    mysql_select_db($db) or die ("erreur de connexion à la base de données");
     
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete);
    $ligne=mysql_fetch_array($resultat);
     
    	$nom = $ligne['nom'];
    	$pass = $ligne['pass'];
     
    if ($nom==$_POST['nom']&&$pass==$_POST['pass'])
    	{
    	session_start();
    	{echo "OK";}}
    else
    {echo "Login ou mot de passe non valide !";}
    ?>

  5. #5
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Le nom de ta base de données, c'est "test1" (le nom du dossier), pas le fichier "db.opt" qui contient des informations sur structure de la base de données.

    En même temps, faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    
    $resultat=mysql_query($requete);
    $ligne=mysql_fetch_array($resultat);
    
    $nom = $ligne['nom'];
    $pass = $ligne['pass'];
    
    if ($nom==$_POST['nom']&&$pass==$_POST['pass'])
    C'est inutile vu que t'es en train de faire deux fois le même test.

    Cela serait mieux approprié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((bool)mysql_num_rows($resultat)) {
        echo 'OK';
    }
    mysql_num_rows — Retourne le nombre de lignes d'un résultat MySQL. Ca retourne ne nombre de lignes dans un jeu de résultats en cas de succès, ou FALSE si une erreur survient.

  6. #6
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    Bon, du nouveau.

    Le script corrigé avec les bons noms de BD marche :

    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
    <?php
    //Déclaration des paramètres de connexion
    $serveur="localhost";
    $bd="test1";
    $utilisateur ="root";
    $motdepasse="";
    
    //Connexion au serveur
    $connex = mysql_connect($serveur, $utilisateur, $motdepasse) or die ("erreur de connexion au serveur");
    mysql_select_db($bd) or die ("erreur de connexion à la base de données");
    	
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete);
    $ligne=mysql_fetch_array($resultat);
    
    	$nom = $ligne['nom'];
    	$pass = $ligne['pass'];
    
    if ($nom==$_POST['nom']&&$pass==$_POST['pass'])
    	{
    	session_start();
    	echo "OK";}
    else
    {echo "Login ou mot de passe non valide !";}
    ?>
    Par contre pour ce qui est de la méthode avec "mysql_num_rows", sans "else {echo 'Faux';}" rien ne s'affiche, mot de passe correct ou non, mais avec "else {echo 'Faux';}" celà renvoie toujours "Faux".

    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
    <?php
    //Déclaration des paramètres de connexion
    $serveur="localhost";
    $bd="test1";
    $utilisateur ="root";
    $motdepasse="";
     
    //Connexion au serveur
    $connex = mysql_connect($serveur, $utilisateur, $motdepasse) or die ("erreur de connexion au serveur");
    mysql_select_db($bd) or die ("erreur de connexion à la base de données");
     
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete);
     
     
    if ((bool)mysql_num_rows($resultat)) {
        echo 'OK';
    }
    else {echo 'Faux';}
    ?>

  7. #7
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Etrange sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (mysql_num_rows($resultat) > 0) {
        echo 'OK';
    }
    else {
        echo 'Faux';
    }
    Devrait fonctionner.

    Vérifie le résultat en faisant un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo mysql_num_rows($resultat);

  8. #8
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    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
    <?php
    //Déclaration des paramètres de connexion
    $serveur="localhost";
    $bd="test1";
    $utilisateur ="root";
    $motdepasse="";
     
    //Connexion au serveur
    $connex = mysql_connect($serveur, $utilisateur, $motdepasse) or die ("erreur de connexion au serveur");
    mysql_select_db($bd) or die ("erreur de connexion à la base de données");
     
    $requete = "select * from table1 where nom='".$_POST['nom']. "'AND pass='".$_POST['pass']."'";
    $resultat=mysql_query($requete);
     
    if (mysql_num_rows($resultat) > 0) {
        echo 'OK';
    }
    else {
        echo 'Faux';
    }
    	echo mysql_num_rows($resultat);
    ?>
    Celà renvoie toujours "Faux0", que ce soit le bon mot de passe ou pas.
    Y-a-t'il un rapport avec ma table, qui possède une colonne non utilisée (identifiant) ?

  9. #9
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Non mais pourtant ça fonctionne. Vérifie ta requête sur PHPMyAdmin. Si ça donne toujours "faux" c'est qu'il ne trouve aucun résultat correspondant.

  10. #10
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    Tssss, en fait ta solution marche parfaitement.

    J'ai trouvé où était mon erreur (lamentable je l'accorde ) :

    Tout simplement dans le form html :

    Mot de passe :
    <input type = "text" name="mdp"><br><br>
    name="mdp" ne correspondait pas à la requete tout à l'heure, puisqu'il portait un autre nom...

    Merci pour les réponses en tout cas !

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

Discussions similaires

  1. Modifier couleurs liens dans "connexion espace membres"
    Par gdfhwXSfvk dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/01/2013, 09h39
  2. Connexion espace membre: utilisateur non reconnu directement
    Par Benamour Jr dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2010, 11h23
  3. [PHP] Probléme de Connexion Espace Membre
    Par Adaeria dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2009, 11h38
  4. [MySQL] Connexion espace membre
    Par marygil dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/10/2009, 09h25
  5. [MySQL] Problème Connexion Espace Membres
    Par Luisito31 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/02/2009, 14h21

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