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 :

le mot de passe ne tient pas compte des majuscules [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 41
    Points
    41
    Par défaut le mot de passe ne tient pas compte des majuscules
    bonjour
    je travail avec easyphp 2.0
    j'ai créé un formulaire en php avec mot de passe
    mais le mot de passe ne tient pas comte des majuscules
    pouvez vous m'aider?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if (isset($_POST['login'])) {
      $loginUsername=$_POST['login'];
      $password=$_POST['password'];
      $MM_fldUserAuthorization = "admin";
      $MM_redirectLoginSuccess = "maj_releve.php";
      $MM_redirectLoginFailed = "pool.php";
      $MM_redirecttoReferrer = true;
      mysql_select_db($database_pbji, $pbji);
     
      $LoginRS__query=sprintf("SELECT login, password, admin FROM rs_data_users WHERE login='%s' AND password='%s'",
      get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

  2. #2
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Hello !

    En effet, MySQL n'est pas sensible à la casse par défaut ! Il faut préciser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COLLATE latin1_general_cs
    (ou tout autre encodage) lors de la création de ta table !

    Tu peux aussi utiliser la fonction MySQL strcmp(), qui elle est sensible à la casse...
    Wookai


  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 41
    Points
    41
    Par défaut
    salut
    peux tu me préciser comment utilser cette
    fonction MySQL strcmp(), ?

    merci de l'aide

  4. #4
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Tu as toute l'explication ici : http://dev.mysql.com/doc/refman/5.0/...html#id3107702

    En gros, tu lui passes deux chaînes à comparer, et il te revoie 0 si elles sont égales, et +/-1 si elles sont différentes (le +/- te permet de les classer dans lordre, mais ce n'est pas ce qui t'intéresse ici).

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mysql> SELECT STRCMP('text', 'text2');
            -> -1
    mysql> SELECT STRCMP('text2', 'text');
            -> 1
    mysql> SELECT STRCMP('text', 'text');
            -> 0

    Par contre, je viens de voir que cette fonction n'est sensible à la case que jusqu'à MySQL 4.0 non inclus ! Donc ça ne va pas fonctionner... La solution est donc d'utiliser le COLLATE, comme dit précédemment...
    Wookai


  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Utilise 'binary' dans ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select 'toto' = 'ToTo'  //-- retourne 1
    select binary 'toto' = 'ToTo'  //-- retourne 0

  6. #6
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Points : 41
    Points
    41
    Par défaut
    merci pour les réponses
    ça marche!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/09/2009, 14h03

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