Page 1 sur 1

Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 11:14
par Sylvain331
Bonjour,

je viens de coder un petit flash bien sympa qui communique avec une base de donnée MySQL à travers des fichiers PHP. Bref je l'ai codé en local, tous ce passait bien, j'ai rencontré les problèmes de codage utf8 etc.. habituel puis j'ai mis l'ensemble sur un site free.

Flash communique en utf8 et la base de données enregistre en utf8 également.

Le problème que j'ai maintenant c'est que les données venant de flash codé en utf8 ne sont convertit tel qu'elle le devrait alors c'était le cas avant.

Exemple :
je reçois "L'épée" dans une variable $_GET de mon fichier PHP (pour l'exemple sinon c'est $_POST depuis le flash). J'utilise ensuite cette variable et l'intègre à une requête SQL :
$requete = sprintf("SELECT Code_arme FROM armes WHERE Nom_arme='%s';",
	mysql_real_escape_string(utf8_decode($_GET['nom_arme'])));
Bon et là au lieu d'obtenir une requête bien jolie j'obtiens (avec un echo) :
SELECT Code_arme FROM armes WHERE Nom_arme='L\\\'?e';
Pour essayer de trouver d'où viens mon problème j'ai fait divers echo de ma variable :
echo utf8_decode($_GET['nom_arme']);
-> L\'?e
echo utf8_encode($_GET['nom_arme']);
-> L\'épée
echo $_GET['nom_arme'];
-> L\'épée

Ce qui m'étonne le plus c'est que jamais je ne retrouve L\\\'?e avec les trois \ qui me paraissent très bizarre.

Voila sinon j'ai d'autre fichier PHP me permettant d'aller chercher des information dans ma base sans paramètres $_POST et qui eux me renvoie de bonne informations non déformé dans flash.

Le problème est spécifique aux chaîne de caractère avec des apostrophe en particulier.

Merci d'avance pour toute les lumière que vous pourrez m'apporter ! :D

Re: Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 11:52
par xTG
L'ajout de \ est une configuration du php.ini, je ne me souviens plus du nom mais je me souviens que j'ai toujours eu des problèmes avec sur free. :)
Utilises la fonction stripslashes().

Re: Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 12:19
par telnes
hello

le mysql_real_escape_string il échappe pas la quote et le slash ? => ajoute deux slash.

++

http://fr2.php.net/manual/fr/function.m ... coding.php

Re: Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 12:41
par moogli
Salut,

Je pencherais pour un suberpe cas de magic quote
Le premier \ viens du magic quote gpc a on le second et troisieme du magic quote sybase (si je ne me trompe) lui aussi a on. Les solutions sont
- de verifier avant insertion en db ce parametre et eventuellement un stripslashes
- de verifier avant affichage et aussi eventuellemznt un stripslashes

Il est surement possible de modifier ce parametre avec ini_set a voir dans la doc ;)

@+

Re: Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 17:43
par Sylvain331
Merci beaucoup sa m'a beaucoup aidé :D

Pour le coup j'ai rajouté ce code dans mon fichier connect qui est inclus partout :
function stripslashes_deep($value)
{
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);

    return $value;
}

$_GET = stripslashes_deep($_GET);
$_POST = stripslashes_deep($_POST);
Et maintenant impécable :D

Encore merci !

Re: Problème de codage Flash-Php-MySQL

Posté : 30 déc. 2010, 18:26
par telnes
hello

pour la portabilité c'est bien de faire un test sur la configuration et agir en conséquence :
http://www.php.net/manual/en/security.m ... abling.php


++