Problème d'encodage

Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
- - Dernière réponse : cs_zzzzzz
Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
- 11 nov. 2011 à 18:07
Bonjour,

Je ne retrouve plus le poste que j'avais poster pour mon problème donc je vais l'exposer de nouveau ici !

J'ai une BDD en UTF8_BIN, j'ai mis un champ "pseudo" en interclassement UTF_8. J'ai mis en PHP header -> UTF8 puis une meta html UTF8

Bref ma page est bien en UTF8! Dans ma bdd pour le champ pseudo j'ai : e280b0e280b0027ec3afe280931fe280991932c39b7349c5a01966

OR, quand je fais un select et que je l'affiche depuis ma page PHP j'obtiens : SELECT pseudo,id,statut FROM `nd_membres` WHERE `pseudo` '��~���2�sI�f' AND `password` 'CRTxoohWtF1xg' LIMIT 0 , 1

Ma requète ne marche évidemment pas. Pourquoi ce problème d'encodage ? Tout est en UTF8

A noter que le champ pseudo est crypté.

Merci d'avance pour votre aide!
Julien.
Afficher la suite 

5 réponses

Messages postés
50
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
14 novembre 2011
0
Merci
le '��~���2�sI�f' il vient d'où ? quel est la procédure de récupération car d'après ton code il est déjà sous cette forme avant même la requete sql.
Commenter la réponse de Zut13
Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
0
Merci
Salut,

En fait j'appel une fonction login :

public function login($pseudo,$password) {
$pseudo = strtolower($pseudo);
$pseudo = Secure::Crypter($pseudo,$this->Cle);
$password = crypt($password,'CRYPT_SHA512');
$result Mysql::MyQuery("SELECT pseudo,id,statut FROM `nd_membres` WHERE `pseudo` '$pseudo' AND `password` = '$password' LIMIT 0 , 1");
echo "SELECT pseudo,id,statut FROM `nd_membres` WHERE `pseudo` '$pseudo' AND `password` '$password' LIMIT 0 , 1";
$res=mysql_fetch_array($result);
if (mysql_result($result,0) == 0) { return 1; }
else {
$_SESSION['pseudo']=$res['pseudo'];
$_SESSION['idpseudo']=$res['id'];
$_SESSION['statut']=$res['statut'];
}
}

A prioris il y a un problème d'encodage quand on SELECT. En fait je ne comprend pas grand chose. Merci de ton aide.
Commenter la réponse de cs_zzzzzz
Messages postés
50
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
14 novembre 2011
0
Merci
Le problème doit venir de cette ligne je pense :
$pseudo = Secure::Crypter($pseudo,$this->Cle); 


ce qu'il faudrait vérifier c'est ce qu'il se passe dans ta fonction crypter sinon je vois pas trop d'où ça peut venir...
Commenter la réponse de Zut13
Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
0
Merci
Salut,

J'ai pris une fonction sur internet pour Crypter.

Le voici :


function Crypter($str, $key)
{
# Add PKCS7 padding.
$block = mcrypt_get_block_size('des', 'ecb');
if (($pad = $block - (strlen($str) % $block)) < $block) {
$str .= str_repeat(chr($pad), $pad);
}

return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
}



Une idée? Merci d'avance pour ton aide!
Commenter la réponse de cs_zzzzzz
Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
0
Merci
Ce que je ne comprend pas c'est que le champ pseudo semble OK quand on regarde via PHPMYADMIN.
Commenter la réponse de cs_zzzzzz