Problème avec les apostrophes !!!

Mammouth du PHP | 737 Messages

17 févr. 2011, 01:51

Concernant ton problème, tu dois utiliser des addslashes dans l'insert et des stripslashes en sortie.
Là je dis non!
C'est du bidouillage et ça ne sert à rien!
On utilise les fonctions d'échappements dédiées, comme mysql_real_escape_string() pour mysql!
Et on fait rien en sortie! (sauf un htmlspecialchars éventuel)
pffff j'ai même le droit de me faire engueuler, c'est trop injuste :cry:

Plus sérieusement, les addslashes et les strip ont bien dû avoir leur utilité si les fonctions existent...Si ce n'est pas pour ça et que c'est du bidouillage, c'est pour quoi ? J'ai toujours pensé que c'était pour palier à ce problème d'accent il y a un certain temps certes mais il fut un temps...

mysql_real_escape_string() , c'est récent ?

Mega dit "la bidouille" qui ne vous en veux pas mais attention quand même :twisted:
;)
Dyslexics are teople poo

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

17 févr. 2011, 02:10

http://fr.php.net/manual/fr/function.my ... string.php (ben oui la doc)

Effectivement c'est récent (PHP 4 >= 4.3.0, PHP 5) ;)

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

Mammouth du PHP | 737 Messages

17 févr. 2011, 13:15

Re,

Mowgli, j'vais te renvoyer dans ta jungle moi :lol:

Plus sérieusement, pour le add et le strip du coup, l'utilité si c'était pas pour ça ?

Bonne journée à tous mes fans !

Mega
;)
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

17 févr. 2011, 13:21

C'était utile avant PHP 4.3.0
Maintenant pourquoi utiliser plusieurs fonctions alors que tout se fait avec une autre ? ;)

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

17 févr. 2011, 13:59

c'est aussi utile pour certaine chose qui n'ont pas forcément un équivalent à mysql_real_escape_string, et surtout parce que la configuration du serveur n'est pas toujours (rarement / jamais) avec magic_quote_* à off et dans ce cas faut bien virer les \ qui arrive par magie :roll: la le stripslashes sera utile avant le mysql_real_escape_string qui de toute façon sera "obligatoire" car addslashes n'échappe pas les meme caractère que mysql_real_escape_string d'où sont intéret :)

je pense par exemple à l'écriture dans un fichier texte tous bête. si magic_quote_gpc est à on la sortie du formulaire va contenir des \ que l'on va insérer dans le fichier, déja c'est moyen. Mais ensuite si magic_quote_runtime est activé alors la même chose va arrivée et la c'est le drame :D
si en plus tu ajoute des modif quelconque tu va avoir une ribanbelle de \\\\ à l'affichage, dans ce cas stripslashes est utile, même si cela ne va pas tous virer et que parfois un str_replace (ou plutot preg_replace et une regexp bien foutue) va être obligatoire pour aplier le problème de base ;)

donc ces fonctions sont évidement utile mais pas toujours dans le contexte où elles sont utilisé car d'autre fonction font le taff est mieux ;)

en général stripslahes est utilisé pour palier le problème des magic_quote_* à on (un array_walk brutal sur $_GET /$_POST par exemple) ;)

PS : y a de bon exemple de ces cas dans la donc de get_magic_quote_gpc :)

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

Mammouth du PHP | 737 Messages

17 févr. 2011, 15:51

Re,
C'était utile avant PHP 4.3.0
Maintenant pourquoi utiliser plusieurs fonctions alors que tout se fait avec une autre ? ;)
Je ne maitrise pas mysql à 100% et j'ai toujours pensé que la méthode que j'utilisais, celle inculquée, était la bonne.
Visiblement, non et heureusement que ce type de forum permet de rectifier le tir même près plusieurs années de mauvaises pratiques encore fallait-il le savoir et connaître ces fonctions mysql bien utiles. Je suis en plein désarroi spiritique 8-|

@moogli : Merci pour ton explication on ne peut plus claire et précise. Je lève mon épée de Damoclès, si si :)

Putain, encore une journée où je vais me coucher moins con qu'au réveil, disons cultivé :lol:

Mega
;)
Dyslexics are teople poo

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

18 févr. 2011, 00:14

Je compléterais juste en disant que le nom de la fonction est suffisamment explicite pour savoir quand et comment les utiliser :
- mysql_real_escape_string() va protéger les chaines pour qu'elles puissent être intégrées dans une base de données mysql (mais ça conviendra pas pour une bdd oracle).

- addslashes() va juste ajouter des antislash dans la chaine, mais n'implique pas de base de données... un exemple bête, générer du javascript :
document.write('<?php echo addslashes($mavar); ?>');
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...