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

Requêtes MySQL Discussion :

Problème de sélection dans un BDD


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Problème de sélection dans un BDD
    Bonjour à tous,

    Voilà, j'ai un problème avec une requête de sélection vers une base de donnée MySQL.

    C'est une simple requête, la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM utilisateurs WHERE pseudo='".$_POST['pseudo']."'
    AND mot_de_passe=PASSWORD('".$_POST['mdp']."');
    Le problème est que le script fonctionne parfaitement sur mon serveur local mais pour sur le serveur de mon hébergeur, alors que :
    * Le script est totalement identique
    * MySQL ne signal aucune erreurs

    La seul et unique différence réside dans le faite que le champ "mot_de_passe" est de type VARCHAR(16) sur le serveur de l'hébergeur et CHAR(16) sur le mien. ( j'ai déjà tenté de changé le type, mais MySQL fait automatiquement la conversion CHAR(16) => VARCHAR(16) )

    En faite, ma requête ne renvoie jamais de résultat, même quand je suis sûr qu'il y en as un !

    Avez vous des idées ?

    Merci d'avance,
    Calen

    PS: Voici le code complet sur la requête MySQL

    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
     
     
    if(isset($_POST['pseudo']) AND $_POST['pseudo'] != NULL) { 
     
    $erreur = NULL;
     
    $strSQL = "SELECT ID, prenom, theme FROM utilisateurs WHERE pseudo='".$_POST['pseudo']."'
    AND mot_de_passe=PASSWORD('".$_POST['mdp']."');";
     
    $resultat = requete_SQL($strSQL); // C'est une fonction que j'ai crée
     
    if(mysql_num_rows($resultat) == 0) {
    	$erreur .= '<p>Aucun utilisateur ne correspond au nom d\'utilisateur
    	et / ou mot de passe.</p>';
    }
    else {
    $table_result = mysql_fetch_array($resultat);
     
    $_SESSION['ID'] = $table_result['ID'];
    $_SESSION['prenom'] = $table_result['prenom'];
    $_SESSION['pseudo'] = $_POST['pseudo'];
    $_SESSION['theme'] = $table_result['theme'];	
     
    header('Location: accueil.php');
    }
    }

  2. #2
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    C'est quoi ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PASSWORD('".$_POST['mdp']."')
    elle est ou cette fonction PASSWORD() ??

  3. #3
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Joe Le Mort
    C'est quoi ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PASSWORD('".$_POST['mdp']."')
    elle est ou cette fonction PASSWORD() ??
    C'est une fonction MySQL.

    Citation Envoyé par calenfeaion
    * MySQL ne signal aucune erreur
    Est-ce que ta fonction requete_SQL passe les requêtes dans le genre de ce que je fais dans ma signature ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    @Eusebius :

    Dans le doute, voici ma fonction requete_SQL(), qui, je le rappelle, fonctionne parfaitement sur mon serveur local :

    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
     
    function requete_SQL($str_SQL, $status) {
    # Cette fonction permet de faire une requete de type SQL a la base de donne
    # /!\ Requiere la fonction connexion_DB /!\
     
    	# Execute la requete proprement dite
    	$resultat = mysql_query($str_SQL);
     
    	# Renvoi du status de la requete effectue
    	if($resultat) {
    		$retour = '<p><font color="green"><b>
    		La requ&ecirc;te a &eacute;t&eacute; effectu&eacute; avec succ&egrave;s.
    		</b></font></p>';
    	}	
    	else {
    		$retour = '<p><font color="red"><b>La requ&ecirc; &eacute;chou&eaute;.<br />';
    		$retour .= 'Erreur SQL : ' . mysql_error() . '<br />';
    		$retour .= 'SQL string : ' . $str_SQL . '<br /></b></font></p>';
    	}
     
    	# Affiche le status de la requete
    	if($status == 'oui') { print $retour; }	
     
    	# Retour de la valeur
    	return $resultat;
    }
    Quand je fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat = requete_SQL($strSQL, 'oui');
    Je reçois un :
    La requête a été effectué avec succès.
    Donc, j'imagine que c'est OK pour la requête, cependant, la requête ne renvois jamais de résultat.

    Néanmoins, une requête du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM `utilisateurs`
    WHERE pseudo = 'webmaster'
    Me renvois l'enregistrement, mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM `utilisateurs`
    WHERE mot_de_passe = PASSWORD( 'lemotdepasse' )
    N'en renvoi aucun, alors que ça devrait !

    Bref bref, je ne comprends pas grand chose...

    Merci pour vos réponses,
    Calen

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Je me demande si PASSWORD a la même implémentation sur tous les systèmes ?

    D'après ce que je vois le problème est plus côté MySQL que PHP (système ou typage de la colonne). Le passage de la requête, vu le code et les résultats, n'a pas l'air de poser de pb en soi.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Je me demande si PASSWORD a la même implémentation sur tous les systèmes ?
    Je me demandais là même chose en faite, mais vu que j'ai crée un utilisateur directement à partir de phpMyAdmin sur le serveur, ça ne devrais pas posé de problème, enfin je crois.

    J'ai demandé au technicien de changer le type de la colonne mot_de_pass, mais je reçois une réponse du genre :
    Si MySQL converti automatique le type, c'est que c'est pas ça le problème
    Donc je ne sais pas...

  7. #7
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Dans la doc MySql 5.0, ils disent :
    Note : La fonction PASSWORD() est utilisée durant l'identification au serveur MYSQL. Il est recommandé de ne pas l'utiliser pour vos applications. Utilisez plutôt MD5() ou SHA1(). Voyez aussi RFC-2195 pour plus d'informations sur comment gérer les mots de passe et l'identification de votre système.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Zooro, je te vénères.

    Ca marche parfaitement maintenant !

    Il y a plus qu'a passé toutes mes applications aux SHA1()

    ( j'aime bien le SHA1(), ça à l'air plus sûr que PASSWORD() en tout cas... )

    PS: Merci aussi à Eusebius, qui a eu la bonne idée de déplacé le topic

  9. #9
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par calenfeaion
    Zooro, je te vénères.
    Un simple merci aurait suffit

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

Discussions similaires

  1. Problème de sélection dans des Jtables
    Par Manaka dans le forum Composants
    Réponses: 1
    Dernier message: 29/10/2006, 22h15
  2. [FLASH 8] Problème de sélection dans une liste
    Par jpboogie dans le forum Flash
    Réponses: 3
    Dernier message: 29/09/2006, 14h12
  3. Problème de sélection dans une listbox
    Par cacahuèèète dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 15h03
  4. [VB6/mysql]:Problème d'insertion dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/06/2006, 10h15
  5. [MySQL] upload : problème fichiers existants dans la bdd ?
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/02/2006, 11h29

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