Aller au contenu

PHP/MySQL et protection des caractères spéciaux


Sujets conseillés

Posté

Salut...

Je me pose une petite question à propos de la protection des caractères spéciaux SQL dans une requête. Il existe la fonction mysql_real_escape_string, mais je me demande s'il est nécessaire de l'utiliser dans mon cas, et si oui, quand l'utiliser.

Voilà comment je code mes données avant de faire une requête :

function code($txt)
{
$txt=trim($txt);
$txt=htmlspecialchars($txt,ENT_QUOTES);
$txt=purge_iso88591($txt);
return $txt;
}

function purge_iso88591($txt)
{
$cp1252=array
(
   "\x80"=>'€', // EURO SIGN
   "\x82"=>'‚', // SINGLE LOW-9 QUOTATION MARK
   "\x83"=>'ƒ', // LATIN SMALL LETTER F WITH HOOK
   "\x84"=>'„', // DOUBLE LOW-9 QUOTATION MARK
   "\x85"=>'…', // HORIZONTAL ELLIPSIS
   "\x86"=>'†', // DAGGER
   "\x87"=>'‡', // DOUBLE DAGGER
   "\x88"=>'ˆ', // MODIFIER LETTER CIRCUMFLEX ACCENT
   "\x89"=>'‰', // PER MILLE SIGN
   "\x8a"=>'Š', // LATIN CAPITAL LETTER S WITH CARON
   "\x8b"=>'‹', // SINGLE LEFT-POINTING ANGLE QUOTATION
   "\x8c"=>'Œ', // LATIN CAPITAL LIGATURE OE
   "\x8e"=>'Ž', // LATIN CAPITAL LETTER Z WITH CARON
   "\x91"=>'‘', // LEFT SINGLE QUOTATION MARK
   "\x92"=>'’', // RIGHT SINGLE QUOTATION MARK
   "\x93"=>'“', // LEFT DOUBLE QUOTATION MARK
   "\x94"=>'”', // RIGHT DOUBLE QUOTATION MARK
   "\x95"=>'•', // BULLET
   "\x96"=>'–', // EN DASH
   "\x97"=>'—', // EM DASH
   "\x98"=>'˜', // SMALL TILDE
   "\x99"=>'™', // TRADE MARK SIGN
   "\x9a"=>'š', // LATIN SMALL LETTER S WITH CARON
   "\x9b"=>'›', // SINGLE RIGHT-POINTING ANGLE QUOTATION
   "\x9c"=>'œ', // LATIN SMALL LIGATURE OE
   "\x9e"=>'ž', // LATIN SMALL LETTER Z WITH CARON
   "\x9f"=>'Ÿ' // LATIN CAPITAL LETTER Y WITH DIAERESIS
);
return strtr($txt,$cp1252);
}

Pensez-vous qu'après ce traîtement, la fonction mysql_real_escape_string soit encore utile ?

Merci

Posté (modifié)
Euh, tu fais tes insertion où ? Il faut l'utiliser au moment des insertions ...

<{POST_SNAPBACK}>

Pour chaque champ saisi dans un formulaire (par exemple), soit je récupère sa valeur entière (intval), soit je l'encode avec ma fonction code.

Modifié par 84mickael

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...