Sensibilité à la casse

hou1919 Messages postés 49 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 9 juin 2009 - 14 avril 2008 à 16:14
hou1919 Messages postés 49 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 9 juin 2009 - 14 avril 2008 à 23:38
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
14 avril 2008 à 17:59
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...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 avril 2008 à 19:54
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).
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
14 avril 2008 à 20:03
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...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 avril 2008 à 20:22
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 avril 2008 à 20:23
Et si tu réponds "surtout quand on a faim", je te bannis!! Non mais...
0
hou1919 Messages postés 49 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 9 juin 2009
14 avril 2008 à 22:57
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
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 avril 2008 à 23:17
$requete = "SELECT * FROM f_inscription_finale where Pseudo COLLATE latin1_bin = '$pseudo' and Password COLLATE latin1_bin = '$pass'";
0
hou1919 Messages postés 49 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 9 juin 2009
14 avril 2008 à 23:38
Merci beaucoup
0
Rejoignez-nous