caractère d'échappement n'est pas inséré dans la table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : caractère d'échappement n'est pas inséré dans la table

par LEON » 23 févr. 2006, 18:50

Merci pour ces précisions!

J'ai également lu le tuto de phpfrance.

A plus!

par Hermès » 23 févr. 2006, 18:41

Il est très facile de supprimer l'intégralité du contenu d'une table (par exemple) lorsque le code n'est pas un minimum sécurisé.
Le fait d'échapper automatiquement tout ce qui va vers la base de données permet justement d'éviter les oublis pouvant attirer les petits malins.

C'est donc une mesure de sécurité supplémentaire, surtout utile lorsqu'on utilise les formulaires.
Dans le cas où tout ce qui est inséré en base ne dépend pas des entrées d'un utilisateur, on peut "oublier" cette mesure de sécurité.

par Invité » 23 févr. 2006, 18:29

You're right!!

J'ai comparé les paramètres et en effet, chez mon hébergeur il y avait les params suivants:

Code : Tout sélectionner

; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off
et en local:

Code : Tout sélectionner

; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off
J'ai donc mis magic_quotes_gpc = Off et ca ne marche plus. Les \ sont supprimés!

Mais je ne comprends pas l'utilité de faire cela... C'est pour éviter d'utiliser des addslashes etc? Ca remplace ce traitement??

Merci pour le tuyau!

par Hermès » 23 févr. 2006, 18:15

J'ai trouvé ça dans mon php.ini :

Code : Tout sélectionner

; Magic quotes ; ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off

par LEON » 23 févr. 2006, 18:06

Non, une est en local et l'autre chez Inf.

Ok je comprends, et ru sais quels paramètres seraient susceptibles de supprimer ces '\' ?

Merci.

par Hermès » 23 févr. 2006, 18:04

tes deux bases de données sont chez le même hébergeur ?
ça peut être simplement lié à la configuration du serveur php : il y a possibilité de sécuriser un peu plus les données à l'aide d'une option du php.ini.

Donc si tu as noté une différence entre une exécution en local et une exécution chez un hébergeur c'est peut être normal si vous n'avez pas configuré php de la même façon.

caractère d'échappement n'est pas inséré dans la table

par LEON » 23 févr. 2006, 17:54

Bonjour à tous!

Voilà, j'ai un problème avec l'échappement de caractères dans ma table:

Exemple:

$nom = "O'Conor";

$maVar = addslashes($nom); //ce qui conne "O\'Conor"
...
...
INSERT INTO maTalbe (monChamp) VALUES ('$maVar');

Lorsque j'execute avec une BD MySQL 4.x.x cela fonctionne et la valeur du champ de ma table vaut "O\'Conor". Mais avec une version 5.x de MySQL cela ne fonctionne pas. Ca m'insère "O'Conor". Est-ce une nouvelle fonctionnalité de MySQL (hébergé chez Infomaniak)??

Merci pour vos réponses!
Ciao.