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 :

probleme avec requete SQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut probleme avec requete SQL
    bonjour à tous. je suis debutant en php et je suis confronté à problème. j'ai une base de donnée nommée bd_fortitude dans laquele un table nommée super_admin contient les champs suivants ainsi que cette seule ligne :

    user_cod--> 1
    user_login-->luc
    user_pwd-->luckyluc

    pourque ce utilisateur puisse avoir accès à une page, j'ai mis le code php suivant
    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
     
     
    //recupperation des valeurs entrées par l'utilisateurs
    $U_login = $_POST['user_login'];
    $U_pwd = $_POST['usr_pass'];
    $U_type = $_POST['user_type'];
     
    $connexion = mysql_pconnect('localhost', 'root', '');
    if($connexion==0){
    header('Location:serv_error.php'); //redirection vers page d'erreur
    mysql_close();
    exit;}
     
    //connexion à la base de donnée
    if(!mysql_select_db('bd_fortitude',$connexion)){
    header('Location:connex_error.php'); //redirection vers page d'erreur
    mysql_close();
    exit;}
     
     
    //recherche des infos de l'utilisateur
    if($U_type=="adm"){
    	$resultat = mysql_query("SELECT user_cod FROM super_admin WHERE user_login LIKE '$U_login' AND user_pwd LIKE '$U_pwd'");
    	if($resultat->user_cod != 1){
    	header('Location:connex_error.php');
    	mysql_close();
    	exit;}
    	else{
    	header('Location:home_admin.php');
    	mysql_close();
    	}
    }
    	?>
    je vérifie donc que le $resultat contient quelque chose pour diriger l'utilisateur vers la bonne page.
    le problème est que même quand je tape de fausses informations je ne tombe pas sur la page d'erreur mais sur la bonne page. je pense que $resultat contient quand même quelque chose.
    comment je pourrais contrôler le contenu de $resultat.
    merci de porter votre attention.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    J'ai repris ton code pour te mettre sur la voie, mais je t'invite à lire quelques tutoriaux histoire d'acquérir les bases :
    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
    <?php
     
    // recupperation des valeurs entrées par l'utilisateurs
    $login = isset($_POST['user_login']) ? $_POST['user_login'] : '';
    $pwd   = isset($_POST['usr_pass'])   ? $_POST['usr_pass']   : '';
    $type  = isset($_POST['user_type'])  ? $_POST['user_type']  : '';
     
    $cnx = mysql_pconnect('localhost', 'root', ''); // CONNEXION PERSISTANTE
     
    if (false === $cnx){
       header('Location:serv_error.php'); //redirection vers page d'erreur
       // mysql_close(); // tu n'as pas à refermer une connexion qui n'a pas pu être ouverte !
       exit;
    }
     
    if ( ! mysql_select_db('bd_fortitude', $cnx)) {
       mysql_close($cnx); // POUR FERMER UNE CONNEXION PERSISTANTE IL FAUT PRECISER EXPLICITEMENT QUELLE CONNEXION FERMER SINON PAS DE FERMETURE
       header('Location:connex_error.php'); //redirection vers page d'erreur
       exit;
    }
     
    //recherche des infos de l'utilisateur
    if ($type === 'adm') {
     
       $sql = "SELECT user_cod FROM super_admin WHERE user_login = '".mysql_real_escape_string($login)."' AND user_pwd = '".mysql_real_escape_string($pwd)."'";
       $qry = mysql_query($sql);
       $nb  = mysql_num_rows($qry);
     
       if($nb != 1) {
          mysql_close($cnx); // POUR FERMER UNE CONNEXION PERSISTANTE IL FAUT PRECISER EXPLICITEMENT QUELLE CONNEXION FERMER SINON PAS DE FERMETURE
          header('Location:connex_error.php');
          exit;
       }
       else {
          mysql_close($cnx); // POUR FERMER UNE CONNEXION PERSISTANTE IL FAUT PRECISER EXPLICITEMENT QUELLE CONNEXION FERMER SINON PAS DE FERMETURE
          header('Location:home_admin.php');
       }
    }
    ?>

  3. #3
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    merci de vous êtes penché sur ma question. j'ai cherché à savoir ce que voulais dire toutes ces nouvelles fonctions pour moi et je crois que ça va je vois leur utilité, mais ce script me ramène toujours à la page erreur après le test sur le nombre de ligne dans le resultat de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($nb != 1){
    mysql_close($connexion);
    header('Location:connex_error.php');

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, il serait possible d'avoir tout le code du formulaire ?

  5. #5
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    oui 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
     
    <form action="authent.php" method="POST" >
    	<!-- <img src="../IMAGES/fond_corps.jpg" /> -->
    	<table border="0">
    		<tr>
    		<td class="logo" width="0"><img  src="../IMAGES/logo_FLC3.gif" /></td>
    		<td class="lib" width="0">
    		<label>Nom d'utilisateur</label></br></br>
    		<label>Mot de passe</label></br></br></br></br></br></br></br></br></br></br>
     
     
    		</td>
    		<td width="0" ><input class="txtbox" type="text" size="30" name="user_login"  /></br></br>
    		<input class="txtbox" type="password" size="30" name="usr_pass"  /></br></br>
     
    		<input type="radio" name="user_type" value="adm" /><label>Administrateur </label></br>
    		<input type="radio" name="user_type" value="forma" /><label>formateur </label></br>
    		<input type="radio" name="user_type" value="etu" checked="1"/><label>Etudiant </label></br></br></br>
    		<input type="image" src="../IMAGES/bouton_connex.jpg" value="Connexion" />
     
    		</td>
    		</tr>
    	</table>
     
    </form>

  6. #6
    Membre du Club
    Homme Profil pro
    au
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : au
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 52
    Points
    52
    Par défaut
    Voilà j'ai retapé un peu ton 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
    if($U_type=="adm"){
    $U_login=mysql_real_escape_string($U_login);
    $U_pwd=mysql_real_escape_string($U_pwd);
    	$resultat = mysql_query("SELECT user_cod FROM super_admin WHERE user_login = '".$U_login."' AND user_pwd '".$U_pwd."'");
    	$nb  = mysql_num_rows($qry);
    	if($nb != 1){
    	header('Location:connex_error.php');
    	mysql_close();
    	exit;}
    	else{
    				// On demarre Session
                    session_start (); 
                    // on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
                    $_SESSION['login'] = $U_login; 
                    $_SESSION['password'] = $U_pwd;
    	header('Location:home_admin.php');
    	mysql_close();
    	}
    }
    ?>
    il te reste que de contrôler les variable $_SESSION dans ta page home_admin.php

  7. #7
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    merci, mais ça ne marche toujours pas, avec ou sans la gestion des sessions c'est zero. je me suis tapé une bonne nuit de documentation en php j'en suis à mes débuts et je crois que je suis vraiment nul avec ce langage.
    soit ma requête est mauvaise soit j'utilise mal les variables soit $nb prend une valeur sans que je ne m'en rende compte . je ne comprend vraiment plus.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Vérifies tes données avec ce script :
    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
    <?php
     
    // recupperation des valeurs entrées par l'utilisateurs
    $login = isset($_POST['user_login']) ? $_POST['user_login'] : '';
    $pwd   = isset($_POST['usr_pass'])   ? $_POST['usr_pass']   : '';
    $type  = isset($_POST['user_type'])  ? $_POST['user_type']  : '';
     
    echo <<<SC
    <pre>
    user : $user
    pwd  : $pwd
    type : $type
    SC;
     
    $cnx = mysql_pconnect('localhost', 'root', ''); // CONNEXION PERSISTANTE
     
    if (false === $cnx){
       header('Location:serv_error.php'); //redirection vers page d'erreur
       exit;
    }
     
    if ( ! mysql_select_db('bd_fortitude', $cnx)) {
       mysql_close($cnx);
       header('Location:connex_error.php'); //redirection vers page d'erreur
       exit;
    }
     
    //recherche des infos de l'utilisateur
    if ($type === 'adm') {
     
       $sql = "SELECT user_cod FROM super_admin WHERE user_login = '".mysql_real_escape_string($login)."' AND user_pwd = '".mysql_real_escape_string($pwd)."'";
       $qry = mysql_query($sql);
       $nb  = mysql_num_rows($qry);
       mysql_close($cnx);
       echo <<<SC
    <pre>
    sql : $sql
    qry : $qry
    nb  : $nb
    SC;
    }
    ?>

  9. #9
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    merci j'ai trouvé d'où venait le problème. il s'agissait des variables d’identification de l'utilisateur qui étaient mal envoyés.

  10. #10
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    toutes mes excuses pour cet oubli.
    merci de m'avoir apporté cette solution merci a tous.

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

Discussions similaires

  1. Probleme avec Requete SQL
    Par mfofana dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/04/2014, 21h23
  2. probleme avec requete SQL dans code VB6
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/05/2007, 21h36
  3. [C# 2.0] Probleme avec requete SQL
    Par Sion_Sempai dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/09/2006, 23h45
  4. Réponses: 3
    Dernier message: 18/09/2006, 20h55
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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