Code : Tout sélectionner
Rappel pratique - n'oubliez pas de :
1. suivre ces quelques conseils de débogage
2. préciser quel SGBD vous utilisez ainsi que sa version
3. utiliser les balises [code] et phpMyAdmin - 2.9.1.1Code : Tout sélectionner
2. préciser quel SGBD vous utilisez ainsi que sa version
Code : Tout sélectionner
$sql = sprintf("SELECT user_id, user_login, user_level FROM users WHERE user_pass ='%s' AND user_login ='%s'",
mysql_real_escape_string($mdp),
mysql_real_escape_string($login));
Tu as raison. Opte pour un VARCHAR. En effet, l'autre pourrait poser problème dans certains cas particuliers (mot de passe comportant un espace final, par exemple).après lecture du manuel SQL, je crois comprendre que la différence en CHAR et VARCHAR est une histoire de remplissage d'octets libre (par rapport au nombre d'octets attribués au champ). Quel est le type le plus pertinent, pour des champs sauvegardant des login/pass ?
Je plussois. C'était la réponse que je voulais donner.Salut,
le problème viens de l'interclassement utilisé par tes tables : tu utilises un latin1_swedish_ci ou le "ci" veut dire case insensitive.
Modifies tes champs pour du latin1_general_cs par exemple ou "cs" veut dire case sensitive.
Tu aurais dû le faire. Je réalise dans ce post que mes connaissances sur le sujet sont approximatives (basées uniquement sur l'expérience) et que j'ai besoin d'un bon rafraichissement sur la théorie. Je m'en vais lire la documentation pour combler mes lacunes.Je plussois. C'était la réponse que je voulais donner.Salut,
le problème viens de l'interclassement utilisé par tes tables : tu utilises un latin1_swedish_ci ou le "ci" veut dire case insensitive.
Modifies tes champs pour du latin1_general_cs par exemple ou "cs" veut dire case sensitive.
parfait, Latin1_general_cs marche parfaitement, merci. Une bonne info ça, puisque ça me permettra, lorsque je créérai d'autres tables USERS, de spécifier ces champs de cette maniere.Salut,
le problème viens de l'interclassement utilisé par tes tables : tu utilises un latin1_swedish_ci ou le "ci" veut dire case insensitive.
Modifies tes champs pour du latin1_general_cs par exemple ou "cs" veut dire case sensitive.
Ensuite cela devrait fonctionner comme tu le souhaites.
Si ce n'est toujours pas le cas il faut regarder du coté de l'interclassement de la connexion au serveur.
Pour plus d'information il faut que tu lise le manuel mysql sur l'interclassement et les collations.
Jeux de caractères et collation : généralités
internationalisation