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 :

Simplifier une requete [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Simplifier une requete
    Bonjour.
    Je voudrais simplifier la requete ci-dessous
    Je voudrais sélectionner directement l'utilisateur en incluant une clause where mais je n'y arrive pas
    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
    <?php
       $val='';
       if(isset($_POST['username']))      $ident=$_POST['username'];
       else	$ident = "";
       if(isset($_POST['password']))     $passwd=$_POST['password'];
       else	$passwd = "";
       // on vérifie si l'identifiant et le mot de passe sont renseignés
       if (( !empty($_POST['username']) && !empty($_POST['password']))) { 
    	$sql = mysql_query("select * FROM admin ",$connexion);
    	// nombre de lignes
    	$nombreligne = mysql_num_rows($sql);
    	for ($i = 0; $i < $nombreligne; $i++) 
    	{
    	   $index = mysql_result($sql,$i,"id_nom");		
    	   $nom = mysql_result($sql,$i,"nom");
    	   $user = mysql_result($sql,$i,"nom_utilisateur");
    	   $password = mysql_result($sql,$i,"password");
    	   $acces = mysql_result($sql,$i,"acces");
    	   if (($ident===$user) && (Sha1($passwd)===$password)){
    		$val="ok";
    		$_SESSION['user'] = $user;
    		$_SESSION['acces'] = $acces;
    		?>
    		<p align="center">Bonjour <b><?php echo $user;?></b> vous êtes connecté(e).
    		<?
    		exit();
    	   } 
    	   else { 
    	      $val='rien';}
    	}
       }
    if ($val=='rien'){
    	echo '<font face="verdana" size="1" color="red"><b>Nom utilisateur ou mot de passe invalide</b></font>';
    }
    ?>
    Merci de m'aider

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Avec moult simplication de code (en supposant que $connexion est défini comme il faut, pas testé mais l'idée est là) :

    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['username']))      $ident=$_POST['username'];
       else	$ident = "";
       if(isset($_POST['password']))     $passwd=$_POST['password'];
       else	$passwd = "";
       // on vérifie si l'identifiant et le mot de passe sont renseignés
       if (( !empty($_POST['username'])) && (!empty($_POST['password']))) { 
    	$sql = mysql_query("SELECT* FROM admin WHERE user='" . $ident . "' AND password='" . $passwd . "'",$connexion);
    	if(mysql_num_rows($sql)) > 0)
    	{
    		$_SESSION['user'] = $user;
    		$_SESSION['acces'] = $acces;
    		echo '<p align="center">Bonjour <b>' . $user . '</b> vous êtes connecté(e).';
    	   } 
    	   else
                      echo '<font face="verdana" size="1" color="red"><b>Nom utilisateur ou mot de passe invalide</b></font>';
    }
    else
           echo '<font face="verdana" size="1" color="red"><b>Nom utilisateur ou mot de passe invalide</b></font>';
     
    ?>

  3. #3
    Invité
    Invité(e)
    Par défaut
    moi j'aurais fait ç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
    18
    19
    20
    21
    22
     
    <?php
    //on vérifie si l'identifiant et le mot de passe sont renseignés
    if (isset($_POST['username'],$_POST['password']) &&  !empty($_POST['username']) && !empty($_POST['password'])) 
    { 
          $sql = mysql_query("SELECT user,acces FROM admin WHERE user='" .addslashes($_POST['username']). "' AND password='".addslashes($_POST['password']). "'",$connexion);
          if(mysql_num_rows($sql) == 1)
          {
                $_SESSION['user'] = //recuperer le user;
                $_SESSION['acces'] = /recuperer l'acces;
                echo '<p align="center">Bonjour <b>' . $user . '</b> vous êtes connecté(e).';
          } 
          else
          {
                                    echo '<font face="verdana" size="1" color="red"><b>Nom utilisateur ou mot de passe invalide</b></font>';
          }
    }
    else
    {
          echo '<font face="verdana" size="1" color="red"><b>Nom utilisateur ou mot de passe invalide</b></font>';
    }
    ?>
    Dernière modification par julp ; 02/11/2007 à 14h37.

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci

    Pourquoi quand j'écri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p align="center">Bonjour <b>'. $user .'</b> vous êtes connecté(e).';
    j'ai :
    Bonjour root vous êtes connecté(e).
    au lieu d'avoir le nom utilisateur

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par philippef
    Merci

    Pourquoi quand j'écri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p align="center">Bonjour <b>'. $user .'</b> vous êtes connecté(e).';
    j'ai :
    Bonjour root vous êtes connecté(e).
    au lieu d'avoir le nom utilisateur
    Parce que tu dois te servir d'une variable $user pour l'utilisateur qui se connecte à ta base...

    Je pense que tu veux plutôt faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['user'] = $_POST['username'];

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 66
    Points
    66
    Par défaut
    de plus, si ton champs password dans ta table est encrypté en MD5, dans ta requête, tu devrais faire comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addslashes(md5($_POST['password'])) ...

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci.

    Je crois que touche au but.
    Encore une question: Comment je récupère les valeurs de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$sql = mysql_query("SELECT * FROM admin WHERE nom_utilisateur='".$ident."' AND password='".$passwd."'",$connexion);
    	if (mysql_num_rows($sql) > 0)
    	{
    je veux récuprer les champs nom_utilisateur et acces
    		$_SESSION['nom'] = $_POST['username'];
    //		$_SESSION['acces'] = $acces;
    
    		echo '<p align="center">Bonjour <b>'. $acces .'</b> vous êtes connecté(e).';
    	}

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $res = mysql_fetch_array($sql);
    $acces = $res['acces'];

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci ça marche

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

Discussions similaires

  1. Simplifier une requete
    Par Msieurduss dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/12/2009, 12h56
  2. [AC-2003] Simplifier une 10 de requetes MAJ
    Par Bernard67 dans le forum VBA Access
    Réponses: 7
    Dernier message: 08/07/2009, 07h37
  3. Simplifier une requete
    Par onimougwo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/05/2008, 17h18
  4. Simplifier une requete
    Par VIRGINIE87 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 15/05/2007, 07h45
  5. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52

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