Sensibilité à la casse

Signaler
Messages postés
49
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
-
Messages postés
49
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
9 juin 2009
-
Salut
j'ai une page d'authentification qui contient un formulaire dans lequel il y a 2 champs de texte un pour le pseudo et l'autre pour le mot de passe et j'ai aussi une page qui s'appelle connexion.php qui verifie le pseudo et  le mot de passe entrés et ceux qui se trouve  dans la base de données mais cette vérification n'est pas sensible à la casse c'est ça mon probleme c-a-d il n'ya pas une différence entre par exemple "admin "et "ADMIN"

et voila un petit bout de code:

    $pseudo=$_POST['pseudo'];     
     $pass=$_POST['password'];
     
                  try
                 {
                    $requete = "SELECT * FROM f_inscription_finale where Pseudo= '$pseudo' and Password= '$pass'";
                    $ligne=$obj->TabResSQL($requete);
                   
                 }
                 catch (Erreur $e)
                 {
                    echo $e -> RetourneErreur();
                 }

ET Merci d'avance

8 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Dans ta base de données, ton champ Pseudo est certainement de type TEXT ou TINYTEXT, ou quelque chose TEXT.
Il faut utiliser un champ BLOB (ou TINYBLOB, tout ça quoi).

Lire la doc pour savoir pourquoi : http://dev.mysql.com/doc/refman/5.0/fr/blob.html

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

meuh...je ne suis pas d'accord :-)
Par défaut, la plupart des bases de données ne sont pas sensibles à la casse lors d'une recherche.
Il y a deux possibilités :
Soit forcer le respect de la casse durant la recherche avec COLLATE
Soit forcer un champ spécifique à respecter la casse toujours avec COLLATE. Si tu as un champ dont le jeu de caractères est latin1_bin, par défaut ce sera latin1_bin_ci (ci pour case insensitive). Il faut alors utiliser latin1_bin_cs (cs pour case sensitive).
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Ah ben oui, en plus t'es admin cs... (ok, je sors, je suis déjà dehors, loin, très loin... au revoir)

Mais pourquoi dans la doc des types BLOB et TEXT, ils parlent de sensibilité à la casse alors ?

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Chais pas, mais c'est aussi valable pour les vachar : par défaut, ils sont insensibles à la casse.
Et utiliser un champ de type blob pour replacer un varchar(20) (parce que je doute qu'un champ mot de passe soit un champ text...ou alors il y a une très mauvais optimisation de la bdd!).
Globalement, il vaut mieux faire attention à la collation de toute manière.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Et si tu réponds "surtout quand on a faim", je te bannis!! Non mais...
Messages postés
49
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
9 juin 2009

Hello
Merci pour vos informations,mais j'ai une question pour "[auteur/MALALAM/58031.aspx malalam]
(Admin CS)" est ce que vous pouvez m'aider à utiliser COLLATE
et pour plus d'informations mes champs Pseudo et Password sont de type varchar

et merci d'avance
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
$requete = "SELECT * FROM f_inscription_finale where Pseudo COLLATE latin1_bin = '$pseudo' and Password COLLATE latin1_bin = '$pass'";
Messages postés
49
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
9 juin 2009

Merci beaucoup