Page 1 sur 1

Enregistrer en bdd, du code source

Posté : 11 avr. 2012, 14:30
par Ehplod
Salut,

Comment enregistrer dans une bdd, un article avec du code source lorsque l'on sécurise les data via addcslaches et mysqli_real_escape_string ?

Parce que il se passe obligatoirement des choses bizarre avec les caractère d’échappement que l'on peut trouver dans les regex, par exemple.

Re: Enregistrer en bdd, du code source

Posté : 11 avr. 2012, 14:51
par binboum
Salut,

Comment enregistrer dans une bdd, un article avec du code source lorsque l'on sécurise les data via addcslaches et mysqli_real_escape_string ?

Parce que il se passe obligatoirement des choses bizarre avec les caractère d’échappement que l'on peut trouver dans les regex, par exemple.
Bonjour,

Je te montre un exemple :
$email = addslashes($_POST['email']);

mysqli_real_escape_string(mysql_query(' UPDATE membres SET email=' '.$email.' ' WHERE pseudo='test' '));

Re: Enregistrer en bdd, du code source

Posté : 11 avr. 2012, 18:54
par xTG
addcslashes() est redondant si tu utilises mysqli_real_escape_string().
Ensuite l'utilisation est entièrement fausse.

Voici un exemple correct (avec champ qui est une chaîne de caractère) :
mysqli_query('UPDATE maTable SET champ = "' . mysqli_real_escape_string($champ) . '" WHERE id = ' . mysqli_real_escape_string($id));

Re: Enregistrer en bdd, du code source

Posté : 12 avr. 2012, 20:14
par Ehplod
addcslashes() est redondant si tu utilises mysqli_real_escape_string().
Pourtant ils parlent de choses différentes ici : http://www.siteduzero.com/tutoriel-3-64 ... nnees.html

Sinon, je pense avoir cerné mon soucis...

Je souhaites enregistrer un bout de code source dans une bdd. Ce code est au sein d'un article.
Je sécurise l'enregistrement avec mysqli_real_escape_string()
A l'affichage, j'utilise geShi pour colorer et ça me plante mon affichage... Lorsque je commente l'a fonction geShi, tout fonctionne.

Je précise que tout fonctionne correctement avec geShi tant que je ne met pas de caractère d'échappement dans mon code source.

Exemple :
preg_replace('#[^a-z0-9-]|[…,!?.;:“’”’'"&+@_]#','-',$var)
Ca fonctionne et geshi colore. Pas d'échappement des '
preg_replace('#[^a-z0-9-]|[…,!?.;:“’”\’\'"&+@_]#','-',$var)
Ca ne fonctionne pas, geShi plante et je n'affiche pas mon article.

Re: Enregistrer en bdd, du code source

Posté : 13 avr. 2012, 12:49
par moogli
Regarde ton utilisation de addcslashes par rapport à l'exemple du tuto que tu indique, il te manque le second paramètre.


Dans ton expression régulière tu n'a pas besoin d'echapper le backquote, si tu n'échappe pas la quote tu a une erreur de parse ! (tu commence la chaîne de caractère par une ' si tu en met une au milieu c'est le drame !

Si tu veux éviter d'être emmerdé par le fait d'échapper ou pas des caractères utilisé la syntaxe heredoc

@+

Re: Enregistrer en bdd, du code source

Posté : 17 avr. 2012, 10:57
par Ehplod
Pour ta remarque sur addcslashes, tu confonds avec quelqu'un d'autre, car je n'ai donné aucun exemple d'utilisation, donc, je n'ai pas pu mettre de code sans arguments. :P
Je l'utilise comme sur le sdz, avec l’argument qui va bien.

Heredoc semble en effet très intéressant pour certains cas particulier.
Merci