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 :

undefined variable sur une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut undefined variable sur une requête
    Bonjour,

    Je suis en train de créer un site internet en php, j'ai un problème sur ma page d'authentification. Lorsque je lance la page j'ai une erreur de variable non définit pour ma requête sql. Pourtant la requette est bien définit plus haut, je ne comprend pas .
    code en question
    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
     
    <html>
    <head>
      <title>Authentification Base de Données</title>
    </head>
    <body>
    <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "test" ) ;
     
     
      if (isset($_POST["pseudo"]))
      {
      $pseudo = $_POST["pseudo"] ;
      }
      if (isset($_POST["mdp"]))
      {
      $mdp = $_POST["mdp"] ;
      }
      if (isset($sql))
      {
      $sql = "Select * from membre where (pseudo='$pseudo') and (mdp='$mdp)'";
      }
     
     //exécution de la requête SQL:
    	$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
    	//affichage des résultats, :
    	if($requete)
    	{
    		echo("vous êtes maintenant connecté") ;
    	}
    	else
    	{
    		echo("la connexion à échouée") ;
    	}
     
    ?>
    </body>
    </html>
    L'erreur intervient sur $requete
    "Notice: Undefined variable: sql in C:\wamp\www\tests\authentification_cible.php on line 27
    Query was empty"

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Heu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($sql))
      {
      $sql =
    Tu vois pas comme un souci là

    Là aussi y'a une erreur:
    parenthèse du mauvais coté.

    Ensuite, qu'est ce qu'il se passe selon toi si je mets "abc' and 1=1" comme mot de passe ?

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut
    Erreur d’inattention en effet, après suppression de l'isset sur le $sql j'obtient quand même une erreur:
    ( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\tests\authentification_cible.php on line 22

    ( ! ) Notice: Undefined variable: mdp in C:\wamp\www\tests\authentification_cible.php on line 22

    Code changer:
    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
     
    <html>
    <head>
      <title>Authentification Base de Données</title>
    </head>
    <body>
    <?php
     
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "test" ) ;
     
      if (isset($_POST["pseudo"]))
      {
      $pseudo = $_POST["pseudo"] ;
      }
      if (isset($_POST["mdp"]))
      {
      $mdp = $_POST["mdp"] ;
      }
     
      $sql = "Select * from membre where (pseudo='$pseudo') and (mdp='$mdp')";
     
     
     //exécution de la requête SQL:
    	$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
    	//affichage des résultats, pour savoir si l'insertion a marchée:
    	if($requete)
    	{
    		echo("votre inscription à bien était effectuée") ;
    	}
    	else
    	{
    		echo("L'insertion à échouée") ;
    	}
     
    ?>
    </body>
    </html>
    Pour les codes d'accès, je suis en local donc je ne m'en suis pas occupé, j'ai pas rencontré de problème pour l'inscription d'un membre je doute que ça vienne de là

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    normal, si rien n'est donné en post ces variables ne sont pas défini vu que tu n'as pas mis de else sur les tests

    d'un autre coté si aucun ou seul l'un des 2 n'est définis quel intérêt d'exécuter ta requête?

    ton code est un trou de sécurité pour les attaques par injection sql... regarde comment te protéger grâce notamment aux techniques d'injection

    et finalement oublie l'extension mysql, qui n'est plus maintenue, et utilise pdo à la place pour te connecter à mysql

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    La logique voudrait qu'on n'execute la requête SQL que si on a reçu les paramètres pseudo / mot de passe.

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam ; plus de ce qui été dit là dessus :
    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
     
    <?php
    ....
     if (isset($_POST['verif_form'])) {  // si le formulaire est validé
             if((isset ($_POST['pseudo']) ) AND ........)) {
     
     
            try {
              tes instructions (requêtes et.....)
     
            }
           catch( Exception $e ){
    	echo 'Erreur d\'affichage : ', $e->getMessage();
    	}
          }
     
     
         }
     
     
    ?>
    pour l'utilisation des condition http://php.net/manual/fr/control-structures.elseif.php
    verfier aussi c'est tes variables sont bien transmis avec un var_dump Ok.

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

Discussions similaires

  1. [MySQL] Question sur les Variables dans une requête php-Mysql
    Par rvtoulon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/02/2012, 12h06
  2. état basé sur une requête et des variables
    Par titi_la_vermine dans le forum IHM
    Réponses: 1
    Dernier message: 02/11/2010, 19h13
  3. [Dates] Undefined variable sur une fonction
    Par jiojioforever dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2007, 11h06
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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