2009-09-09 6 views

Répondre

1

non plus.

magic quotes est la racine de tout mal! (à mes yeux encore pire que l'optimisation prématurée xD)

et pourquoi voulez-vous créer une fonction slashes définie par l'utilisateur (add | strip), quand il y a des fonctions php natives?

si vous voulez échapper à votre date pour une base de données utiliser la base de données des fonctions spécifiques (par exemple mysqli_real_escape_string)

EDIT. pour compléter ma réponse (après avoir discuté avec sadi dans les commentaires):

  • si vous souhaitez afficher/sortie une entrée, utilisez htmlspecialchars

  • si vous allez utiliser votre entrée dans une URL , utilisez urlencode

donc, il n'y a pas de meilleure façon simple ou correcte pour encoder vos données. vous devez utiliser les bonnes fonctions au bon endroit au bon moment. chacun a son propre but (voir ici: http://xkcd.com/163/)

5

Faites-le manuellement! Les guillemets magiques sont obsolètes en PHP 5, et ils sont complètement supprimés en PHP 6. Non seulement cela, mais ils sont purement maléfiques! Ils causeront des erreurs dans des endroits que vous ne pouvez même pas imaginer. Explicite est toujours mieux que implicite (comme le dirait Python).

1

Il est préférable de ne pas utiliser de guillemets magiques. Si vous les désactivez au début de votre script avec:

set_magic_quotes_runtime(0); 

Vous pouvez faire votre demande qui sera compatible avec les versions antérieures de PHP, tout en codant pour la version actuelle de PHP où ils sont dépréciés, et versions furture où ils sont complètement enlevés. La suppression de guillemets d'une chaîne est une bonne pratique et quand quelque chose ne va pas, vous savez que c'est dans votre propre code, plutôt que dans un paramètre PHP ou incompatible avec la version de PHP que vous utilisez actuellement.

Espérons que ça aide.

2

Si vous souhaitez désactiver les guillemets magiques, ne le remplacez pas par votre propre système d'échappement automatique des guillemets dans toutes les entrées. Le point est: échapper automatiquement tout est une mauvaise idée. Vous devriez seulement échapper quelque chose avant de le passer à un autre système ou couche de votre application. Chaque système a des exigences différentes pour s'échapper. Par exemple, si vous générez du code HTML, utilisez htmlspecialchars() avant de générer une variable de chaîne. Si vous envoyez du code SQL à une base de données, utilisez l'une des fonctions d'échappement conçues pour cette base de données, comme mysql_real_escape_string(). Si vous créez un document XML, utilisez l'une des bibliothèques XML de PHP; ceux-ci feront l'évasion pour vous.

Il n'existe pas de solution d'échappement unique. C'est pourquoi les citations magiques sont mauvaises.

Questions connexes