Enregistrer en bdd, du code source

Eléphant du PHP | 85 Messages

11 avr. 2012, 14:30

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.

Eléphant du PHP | 110 Messages

11 avr. 2012, 14:51

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' '));

ViPHP
xTG
ViPHP | 7331 Messages

11 avr. 2012, 18:54

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));

Eléphant du PHP | 85 Messages

12 avr. 2012, 20:14

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 avr. 2012, 12:49

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

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 85 Messages

17 avr. 2012, 10:57

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