Gestion des échappements dans Mysql ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Gestion des échappements dans Mysql ?

par Ryle » 27 sept. 2007, 16:20

Vala :) C'est comme php en fait... quand tu fais une chaine où tu protèges un caractère, il ne t'affiche pas les caractères d'échappement :
echo " ma \"chaine\" entre guillemets "; // affiche bien : ma "chaine" entre guillemets
Ben MySQL fait pareil :)


Ps : Pense à ajouter le tag [Résolu] pour indiquer que ce sujet contient une solution
en cliquant sur le bouton Image en haut à gauche de ce sujet

par Tintin72 » 27 sept. 2007, 15:48

En fait il les retire lors de l'enregistrement..
D'accoooooord! :D
Merci de m'avoir éclairé sur ce point parce que je commençais
à plus rien comprendre :wink:
J'ai regardé (mal peut être :oops: ) dans la doc de Mysql mais je n'ai pas vu
d'explication là dessus.
Donc pour toutes insertion (INSERT ou UPDATE) -> mysql_real_escape_string
et rien du tout pour tout ce qui concerne l'extraction de données.

Merci encore :wink:

par Ryle » 27 sept. 2007, 14:49

En fait il les retire lors de l'enregistrement.. :)

L'ajout d'un antislash devant un caractère permet à mysql de savoir que celui-ci va nécessiter un traitement particulier. En l'occurence, devant une apostrophe, il lui permet de savoir que cette apostrophes ne termine pas la chaine, mais qu'elle correspond simplement à un caracatère comme un autre. Il considère donc ton " \' " comme un " ' ", et c'est ce qu'il va insérer en base.

Ainsi, aussi bien en base que lors de la restitution des données, ta chaine ne comportera pas d'antislash protecteur. En revanche, il te faudra à nouveau les ajouter pour mettre à jour ta valeur dans un update :)

Gestion des échappements dans Mysql ?

par Tintin72 » 27 sept. 2007, 08:30

Bonjour,

Il y a quelque chose que je ne comprend pas bien au sujets des
échappements dans mysql.
J'ai désactivé tous les magic_quote dans php.ini pour
gérer moi même les échappements des apostrophes et des guillemets.
J'utilise donc mysql_real_escape_string pour chaque entrée dans
la bdd. En toute logique je pensais utiliser stripslash lors
de la récupération des données. Mais je viens de m'apercevoir
que même sans stripslash les données affichées n'ont pas
d'antislashes devant les ' et les ".
Mysql retire t-il automatiquement les échappements lors des extractions
de données ?

Merci