JeuWeb - Crée ton jeu par navigateur
chercher une chaine UTF8 dans une base de donnée - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : chercher une chaine UTF8 dans une base de donnée (/showthread.php?tid=4773)

Pages : 1 2


chercher une chaine UTF8 dans une base de donnée - php_addict - 26-04-2010

bonjour

j'ai un petit probleme d'encodage ut8, je pensais les avoir tous résolus mais ce n'est pas le cas:

ma base est en UTF8 ainsi que mon HTML

le pseudo de mes joueurs dans ma base de donnée est encodé comme ceci lors de l'inscription:

Code :
$pseudo=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$pseudo=addslashes ($pseudo);

j'ai un formulaire de recherche de joueur:

Code :
<html>
<meta http-equiv="Content-Type" content="utf-8" />

<input type="text" name="pseudo" value="" />

</html>


mais je n'arrive pas à faire ceci:

Code :
$pseudo_du_formulaire=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$pseudo_du_formulaire=addslashes ($pseudo);

$requete=$connexion->query("SELECT id FROM joueur WHERE pseudo='$pseudo_du_formulaire'");        
$num_rows = $requete->rowCount();

$num_rows est NULL

auriez vous déjà rencontré ce problème et auriez vous une idée de comment faire:

c'est à dire: je dois faire un SELECT à partir d'un pseudo passé en POST le tout en utf8...

merci de m'avoir lu

bonne journée


RE: chercher une chaine UTF8 dans une base de donnée - Ter Rowan - 26-04-2010

y a un truc qui me chiffone :

$pseudo_du_formulaire=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$pseudo_du_formulaire=addslashes ($pseudo);


est ce que du coup tu ne perds pas ton "pseudo_du_formulaire" et donc du coup, tu ne retrouves rien ?


RE: chercher une chaine UTF8 dans une base de donnée - php_addict - 26-04-2010

(26-04-2010, 11:24 AM)Ter Rowan a écrit : y a un truc qui me chiffone :

$pseudo_du_formulaire=htmlspecialchars($_POST['pseudo'], ENT_QUOTES, 'UTF-8');
$pseudo_du_formulaire=addslashes ($pseudo);


est ce que du coup tu ne perds pas ton "pseudo_du_formulaire" et donc du coup, tu ne retrouves rien ?

oups, effectivement...désolé...


RE: chercher une chaine UTF8 dans une base de donnée - Sephi-Chan - 26-04-2010

Pourquoi utiliser les mauvais outils pour "sécuriser" les chaînes ?


Sephi-Chan


RE: chercher une chaine UTF8 dans une base de donnée - php_addict - 26-04-2010

(26-04-2010, 05:59 PM)Sephi-Chan a écrit : Pourquoi utiliser les mauvais outils pour "sécuriser" les chaînes ?
Sephi-Chan

c'est à dire? tu parles des requêtes préparées?


RE: chercher une chaine UTF8 dans une base de donnée - Sephi-Chan - 27-04-2010

Oui. Car là, ça fait vraiment : je passe mes variables dans le plus de moulinettes possible en espérant que ça convienne. En plus, ton erreur ne serait pas arrivée puisque tu n'aurais pas eu à utiliser de variable intermédiaire (et tu aurais donc produit un code plus clair, sans superflu).

Et si vraiment tu n'as pas envie de les utiliser (pour je ne sais quelle mauvais raison), tu peux au moins pomper la fonction d'echappement utilisée dans un framework sérieux comme Zend Framework ou Symfony.

L'autre possibilité est de ne pas utiliser PDO à moitié : soit on le fait bien, soit on le fait pas. Là, aucun doute que le code n'est pas robuste.

De plus, ta variable $requete est mal nommée. Ce que renvoie query() est un jeu de résultat : des données utilisables. En nommant ainsi, tu risques d'entretenir la confusion.


Sephi-Chan


RE: chercher une chaine UTF8 dans une base de donnée - php_addict - 27-04-2010

merci pour tes remarques pertinentes

(27-04-2010, 07:20 AM)Sephi-Chan a écrit : Oui. Car là, ça fait vraiment : je passe mes variables dans le plus de moulinettes possible en espérant que ça convienne.

ôte moi d'un doute: en utilisant les requetes préparées, cela évite les injection sql, mais pas les failles xss, il faut quand meme utiliser une moulinette du genre htmlentities non ???


RE: chercher une chaine UTF8 dans une base de donnée - Sephi-Chan - 27-04-2010

Oui, mais les failles XSS se neutralisent à l'affichage. S'il ne fallait retenir qu'une chose :

Là où il y a un echo, il doit y avoir un htmlentities.

En faisant ça systématiquement, tu es sûr de n'avoir aucun problème.
Après, tu peux ne pas le faire quand tu affiches des données sûres.

N'oublions pas que les failles XSS sont exploitables à partir du moment où un seul petit élément de texte saisi par l'utilisateur est affichè sans utilisation de htmlentities (ou équivalent)


Sephi-Chan


RE: chercher une chaine UTF8 dans une base de donnée - php_addict - 27-04-2010

merci ;-)

j'ai regardé Symfony, aie aie aie aie... pas facile la syntaxe...

combien de temps il t'as fallu pour maitriser un framework php ? ca me parait compliquer, ma premiere approche avec des lignes de code c'etait en asm, et là pas de framework, que des mov ax,6; pop bx; etc....


RE: chercher une chaine UTF8 dans une base de donnée - My Hotel - 27-04-2010

C'est sûr que Symfony n'est pas le plus simple. Tu peux commencer par Cake PHP, il est plus simple, même si plus lent, et moins puissant à mon goût. Tu apprécieras sûrement le principe de convention avant configuration : si tu respecte les conventions, le codage est très rapide.
En plus, il y a un tuto sur le SdZ, pas mal pour rentrer dans le monde des framework en douceur.
Et sache que pour apprendre un framework, tu n'as pas besoin d'en lire (tout) le code. Mais lire le code des gros framework est toujours intéressant : ils utilisent une architecture très robuste.

Bye