2010-08-16 3 views
2

donc j'utilise mysql_real_escape_string pour désinfecter une entrée utilisateur avant de l'entrer dans la db, je voudrais savoir comment je vais faire pour inverser cette fonction de sorte que lorsque je renvoie à l'écran tous les caractères échappés comme/n/r converti en nouvelles lignes réelles ... merci!Comment formater correctement du texte après avoir utilisé mysql_real_escape_string?

également, quelle est la différence entre/n et/r?

Répondre

1

mysql_real_escape_string() n'ajoute pas de barres obliques à stockées. Il échappe les caractères afin qu'ils puissent être transmis en toute sécurité à travers le moteur mysql. Les données sont stockées telles quelles, sans barres obliques.

En tant que tel, vous n'avez pas besoin d'utiliser stripslashes() lors de la sortie de la base de données des données échappées avec eux.

Si vous voyez des barres obliques supplémentaires, c'est parce que vous les ajoutez quelque part, par exemple addslashes() ou magic_quotes_gpc() est activé. Comme il a été noté, les échappées ne sont pas des sauts de ligne. N'utilisez que stripslashes() sur les données contenant des barres obliques d'échappement ou risquez de supprimer les barres obliques essentielles.

Sous la direction d'ajouter: La seule fois où vous voudriez supprimer les slash de mysql_real_escape_string() est si vous l'avez fait avant le stockage de données, dire si pour une raison quelconque les données évadé la minute où vous avez obtenu une forme puis fit écho sur dans un message d'erreur/champ de formulaire pré-rempli.

+0

* La seule fois où vous voudriez supprimer les barres obliques de 'mysql_real_escape_string()' est ... * Ne faites pas ça. mysql_real_escape_string() 'ne doit être utilisé que juste avant l'interrogation, car il est exécuté spécifiquement pour la connexion à la base de données active. Utilisez un échappement/désinfectant différent si vous avez besoin de ce type de fonctionnalité ailleurs dans votre code. – cbednarski

1

stripslashes($variableHere) supprime toutes les barres obliques du $variableHere, il ne doit être utilisé que s'il y a des barres obliques dans la chaîne. mysql_real_escape_string() préserve la chaîne initiale, donc tout ce que vous passez est ce qui sera entré dans la base de données. Voir le manuel de php.net ci-joint pour plus d'informations. En ce qui concerne votre exemple des caractères \ n et \ r, ils seront conservés par mysql_real_escape_string() dans leur état naturel, mais si vous faites écho \ n et \ r directement dans HTML, il ne montrera pas le linebreak, vous Je vais devoir utiliser nl2br($string) pour ce résultat.

http://php.net/manual/en/function.stripslashes.php

http://php.net/manual/en/function.nl2br.php

modifier Nettoyage ceci comme apparemment il est difficile de comprendre.

+0

Il n'a pas ** besoin ** de tout sauf de la fonction 'nl2br()' pour sa question, mais je lui ai fourni les stripslashes et le lien vers le manuel expliquant. – Robert

+0

Je ne lui ai pas dit d'exécuter cette commande sur tout ce qui sortait d'une base de données, arrêtez d'agir comme je l'ai fait. J'ai dit qu'il supprimerait toutes les barres obliques, s'il ne voit pas de barres obliques, il n'y a aucune raison d'exécuter la commande. – Robert

Questions connexes