en local (php 4.3.9 ; mysql 4.0.21 ; apache 2) je teste le code suivant :
$myvar="c'est moi"
str_replace("'","\'",$myvar)
la fonction me renvoie le texte : c\'est moi
Tant mieux c'est que je veux. Par contre le même code php exécuté chez mon
hébergeur (php 4.3.9 ; mysql 4.0.21 ; apache 2) me donne le résultat
suivant :
c\\'est moi
Et ça je ne veux pas car ça génère ensuite une erreur dans ma requète SQL.
Avez vous une explication logique à ce phénomène ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Kawai
salut,
Certains serveurs ajoutent tout seul les devant les caracteres spéciaux. La solution c'est d'utiliser la fonction qui va bien pour ajouter les seulement là ou il y en a besoin...
la fonction qui va bien c'est addslashes (et stripslashes aussi pour retirer les )
Certains serveurs ajoutent tout seul les devant les caracteres
spéciaux. La solution c'est d'utiliser la fonction qui va bien pour
ajouter les seulement là ou il y en a besoin...
la fonction qui va bien c'est addslashes (et stripslashes aussi pour
retirer les )
Certains serveurs ajoutent tout seul les devant les caracteres spéciaux. La solution c'est d'utiliser la fonction qui va bien pour ajouter les seulement là ou il y en a besoin...
la fonction qui va bien c'est addslashes (et stripslashes aussi pour retirer les )
"Freegate" a écrit dans le message de news: 41a664d1$0$16344$
Bonjour,
en local (php 4.3.9 ; mysql 4.0.21 ; apache 2) je teste le code suivant :
$myvar="c'est moi" str_replace("'","'",$myvar)
la fonction me renvoie le texte : c'est moi
Tant mieux c'est que je veux. Par contre le même code php exécuté chez mon hébergeur (php 4.3.9 ; mysql 4.0.21 ; apache 2) me donne le résultat suivant :
c'est moi
Et ça je ne veux pas car ça génère ensuite une erreur dans ma requète SQL.
Avez vous une explication logique à ce phénomène ?
Merci pour vos lumières
Bon je me répond à moi même :
Paramétrage php.ini était sur "off" pour moi et sur "on" sans doute chez mon hébergeur
Principe pour ceux ne connaissent cette subtilité:
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle permet de préfixer automatiquement par '' tous les caractèeres saisis dans les formulaires ou provenant de cookies qui risqueraient de poser problème avec MySQL. Par exemple la simple quote (') est transform´ee en (')
magic quotes runtime devrait valoir Off. Ainsi les données provenant de MySQL ne seront pas modifiées, même si elles contiennent des (').
Ce comportement est celui qui pose le moins de problèmes puisqu'il évite d'avoir à utiliser systématiquement les fonctions addSlashes et stripSlashes.
"Freegate" <freegate@ifrance.com> a écrit dans le message de news:
41a664d1$0$16344$8fcfb975@news.wanadoo.fr...
Bonjour,
en local (php 4.3.9 ; mysql 4.0.21 ; apache 2) je teste le code suivant :
$myvar="c'est moi"
str_replace("'","'",$myvar)
la fonction me renvoie le texte : c'est moi
Tant mieux c'est que je veux. Par contre le même code php exécuté chez mon
hébergeur (php 4.3.9 ; mysql 4.0.21 ; apache 2) me donne le résultat
suivant :
c\'est moi
Et ça je ne veux pas car ça génère ensuite une erreur dans ma requète SQL.
Avez vous une explication logique à ce phénomène ?
Merci pour vos lumières
Bon je me répond à moi même :
Paramétrage php.ini était sur "off" pour moi et sur "on" sans doute chez mon
hébergeur
Principe pour ceux ne connaissent cette subtilité:
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle
permet de préfixer
automatiquement par '' tous les caractèeres saisis dans les formulaires ou
provenant de cookies qui risqueraient de poser problème avec MySQL. Par
exemple la simple quote (') est transform´ee en (')
magic quotes runtime devrait valoir Off. Ainsi les données provenant de
MySQL ne seront
pas modifiées, même si elles contiennent des (').
Ce comportement est celui qui pose le moins de problèmes puisqu'il évite d'avoir
à utiliser systématiquement les fonctions addSlashes et stripSlashes.
"Freegate" a écrit dans le message de news: 41a664d1$0$16344$
Bonjour,
en local (php 4.3.9 ; mysql 4.0.21 ; apache 2) je teste le code suivant :
$myvar="c'est moi" str_replace("'","'",$myvar)
la fonction me renvoie le texte : c'est moi
Tant mieux c'est que je veux. Par contre le même code php exécuté chez mon hébergeur (php 4.3.9 ; mysql 4.0.21 ; apache 2) me donne le résultat suivant :
c'est moi
Et ça je ne veux pas car ça génère ensuite une erreur dans ma requète SQL.
Avez vous une explication logique à ce phénomène ?
Merci pour vos lumières
Bon je me répond à moi même :
Paramétrage php.ini était sur "off" pour moi et sur "on" sans doute chez mon hébergeur
Principe pour ceux ne connaissent cette subtilité:
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle permet de préfixer automatiquement par '' tous les caractèeres saisis dans les formulaires ou provenant de cookies qui risqueraient de poser problème avec MySQL. Par exemple la simple quote (') est transform´ee en (')
magic quotes runtime devrait valoir Off. Ainsi les données provenant de MySQL ne seront pas modifiées, même si elles contiennent des (').
Ce comportement est celui qui pose le moins de problèmes puisqu'il évite d'avoir à utiliser systématiquement les fonctions addSlashes et stripSlashes.
Bruno Baguette
Freegate wrote:
"Freegate" a écrit dans le message de news: 41a664d1$0$16344$
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle permet de préfixer automatiquement par '' tous les caractèeres saisis dans les formulaires ou provenant de cookies qui risqueraient de poser problème avec MySQL. Par exemple la simple quote (') est transform´ee en (')
Bonjour,
Il me semble que c'est le contraire (valeur OFF recommandée pour magic_quotes_gpc). Cela évite de devoir chipoter avec stripslashes si les données GPC doivent être affichées.
Par ailleurs, pour escaper les caractères spéciaux des chaines de caractères que l'on injecte dans les requêtes SQL, ce sont les fonctions propres au SGBD utilisé qu'il faut utiliser, exemple :
PostgreSQL : pg_escape_string() ou pg_escape_bytea()
mysql : mysql_real_escape_string()
Bien à vous,
-- Bruno BAGUETTE -
S'i'n'a è'ne saquî qui n'doit nin mârtchi, è'n mârtch'rè nîn.
Freegate wrote:
"Freegate" <freegate@ifrance.com> a écrit dans le message de news:
41a664d1$0$16344$8fcfb975@news.wanadoo.fr...
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle
permet de préfixer
automatiquement par '' tous les caractèeres saisis dans les formulaires ou
provenant de cookies qui risqueraient de poser problème avec MySQL. Par
exemple la simple quote (') est transform´ee en (')
Bonjour,
Il me semble que c'est le contraire (valeur OFF recommandée pour
magic_quotes_gpc). Cela évite de devoir chipoter avec stripslashes si
les données GPC doivent être affichées.
Par ailleurs, pour escaper les caractères spéciaux des chaines de
caractères que l'on injecte dans les requêtes SQL, ce sont les fonctions
propres au SGBD utilisé qu'il faut utiliser, exemple :
PostgreSQL : pg_escape_string() ou pg_escape_bytea()
mysql : mysql_real_escape_string()
Bien à vous,
--
Bruno BAGUETTE - bouchon@alussinan.org
S'i'n'a è'ne saquî qui n'doit nin mârtchi, è'n mârtch'rè nîn.
"Freegate" a écrit dans le message de news: 41a664d1$0$16344$
magic quote gpc peut valoir off ou on. La valeur on est recommandée : elle permet de préfixer automatiquement par '' tous les caractèeres saisis dans les formulaires ou provenant de cookies qui risqueraient de poser problème avec MySQL. Par exemple la simple quote (') est transform´ee en (')
Bonjour,
Il me semble que c'est le contraire (valeur OFF recommandée pour magic_quotes_gpc). Cela évite de devoir chipoter avec stripslashes si les données GPC doivent être affichées.
Par ailleurs, pour escaper les caractères spéciaux des chaines de caractères que l'on injecte dans les requêtes SQL, ce sont les fonctions propres au SGBD utilisé qu'il faut utiliser, exemple :
PostgreSQL : pg_escape_string() ou pg_escape_bytea()
mysql : mysql_real_escape_string()
Bien à vous,
-- Bruno BAGUETTE -
S'i'n'a è'ne saquî qui n'doit nin mârtchi, è'n mârtch'rè nîn.