OVH Cloud OVH Cloud

magic_quotes_gpc et php ini

1 réponse
Avatar
Tran
Bonjour

Je poste aujourd'huit car je suis tombé sur une sbutilité que je ne
m'explique pas sur le fonctionnement de php et plus précisément sur
magic_quotes_gpc.

J'ai bricolé un script (oui je suis un bleu) qui liste le contenu d'un
dossier, répertoires par répertoires et qui enregistre le nom et le chemin
de chaque dossiers et fichiers rencontrés dans une table mysql.
Sous windows sa fonctionne (easyphp 1.8). Par contre, sous linux...(mysql
4.1.11, php 4.3.10)


Je vous passe les détails.
Au départ la ligne magic_quotes_gpc dans php.ini est à On.

$temp0 = (!get_magic_quotes_gpc()) ?
addslashes($ListeDossiers[$tempocomptage][0]) :
$ListeDossiers[$tempocomptage][0];

La, normal, $temp0=$ListeDossiers[$tempocomptage][0] vu que
magic_quotes_gpc=On.
Et bien à chaque fois qu'un dossier contiend une quote, j'ai ce joli message
d'erreur au moment de l'écriture dans la table :
impossible d'ajouter des données à la table listedossiers : You have an
error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'lala', 'dossier
unir/a'lala', '13/08/2005 20:40:07', '13/08/2005 20:40:07', ' at line 6

Par contre, si je met magic_quotes_gpc=Off, tout fonctionne.
$temp0 = addslashes($ListeDossiers[$tempocomptage].

Ma question est donc : quelle est la difference entre magic_quotes_gpc=On
dans le php.ini et addslashes dans mon script? (je croyais, au final, que le
résultat devait être le même).

Si quelqu'un peut m'éclairer
Merci d'avance

1 réponse

Avatar
Redy
Magic_quotes_gpc vérifies le mode de fonctionnement de PHP à la
réception de données via GET, POST et COOKIE (d'où le GPC ...).
Et à mon avis, les variables que tu manipules ne viennent pas de ceux là ?

Si c'est vrai, l'utilisation de "get_magic_quotes_gpc()" est ici inutile.

T'aurais du peut-être faire le test sur :
get_magic_quotes_runtime() ou

Plu simple encore, applique dirèctement la fonction
"mysql_real_escape_string()" sur les données à passer via MySQL.
Et oublies les tests.

Ex::
$sql = "INSERT INTO TABLEA colB='".mysqlreal_escape_string($variable)."'";

Ciao.

Bonjour

Je poste aujourd'huit car je suis tombé sur une sbutilité que je ne
m'explique pas sur le fonctionnement de php et plus précisément sur
magic_quotes_gpc.

J'ai bricolé un script (oui je suis un bleu) qui liste le contenu d'un
dossier, répertoires par répertoires et qui enregistre le nom et le chemin
de chaque dossiers et fichiers rencontrés dans une table mysql.
Sous windows sa fonctionne (easyphp 1.8). Par contre, sous linux...(mysql
4.1.11, php 4.3.10)


Je vous passe les détails.
Au départ la ligne magic_quotes_gpc dans php.ini est à On.

$temp0 = (!get_magic_quotes_gpc()) ?
addslashes($ListeDossiers[$tempocomptage][0]) :
$ListeDossiers[$tempocomptage][0];

La, normal, $temp0=$ListeDossiers[$tempocomptage][0] vu que
magic_quotes_gpc=On.
Et bien à chaque fois qu'un dossier contiend une quote, j'ai ce joli message
d'erreur au moment de l'écriture dans la table :
impossible d'ajouter des données à la table listedossiers : You have an
error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'lala', 'dossier
unir/a'lala', '13/08/2005 20:40:07', '13/08/2005 20:40:07', ' at line 6

Par contre, si je met magic_quotes_gpc=Off, tout fonctionne.
$temp0 = addslashes($ListeDossiers[$tempocomptage].

Ma question est donc : quelle est la difference entre magic_quotes_gpc=On
dans le php.ini et addslashes dans mon script? (je croyais, au final, que le
résultat devait être le même).

Si quelqu'un peut m'éclairer
Merci d'avance