Enregistrer textarea MySQL et de préserver les sauts de ligne
Imaginer un blog ou d'un système cms (PHP et MySQL). Je veux laisser à l'utilisateur d'entrer du texte dans un textarea et l'enregistrer dans la base de données. Le type du champ dans la base de données de TEXTE.
Je veux conserver les sauts de ligne et les imprimer plus tard. Je sais que je peux le faire avec PHP nl2br
-fonction, mais comment puis-je protéger cette chaîne contre les attaques par injection SQL (supposons que je ne peux pas utiliser les requêtes préparées). Si j'utilise mysql_real_escape_string
sur elle, elle ne veut pas m'afficher les sauts de ligne plus.
$text = 'one line
another line';
$text = mysql_real_escape_string($text);
/* save to db, fetch it some time later */
echo nl2br($text); /* output: one line\r\nanotherline */
OriginalL'auteur Gabb0 | 2010-08-14
Vous devez vous connecter pour publier un commentaire.
mysql_real_escape_string
n'est pas supprimer des sauts de ligne, il échappe.Il doit travailler bien pour échapper à la chaîne de rangement, et de l'application de
nl2br
(éventuellement en combinaison avechtmlspecialchars()
pour empêcher des utilisateurs d'accéder à du HTML brut) lorsque les données sont sortie. C'est la meilleure façon d'aller.OriginalL'auteur Pekka 웃
mysqli_real_escape_string
remplacera votre retour chariot avec\r\n
, vous aurez donc besoin de le récupérer à l'aide destr_replace()
. Toutefois, il ne sera pas visible dans votre navigateur /client de messagerie. C'est là quenl2br()
entre en jeu:Le code est testé, vous pouvez l'utiliser.
OriginalL'auteur bromelio
ne voyez-vous pas
"\n"
littéraux à la place des sauts de ligne?si oui, votre code faire certaines choses désagréables, les plus susceptibles de vous échapper de vos données deux fois.
ou, ne pas vous faire mysql_real_escape_string() après l'obtention de données de base de données?
De toute façon, vous avez à faire un peu de débogage - une enquête, pour voir ce qui arrive à vos données sur chaque étape. Il suffit d'imprimer $_POST['textarea_name'], requête SQL, etc.
Pour voir le moment où vous perdez vos pauses et de trouver un délinquant
Notes:
mysql_real_escape_string protéger de toute attaque. Il s'échappe des délimiteurs.
nl2br ne pas préserver quoi que ce soit. Il ajoute une balise HTML pour les sauts de ligne.
OriginalL'auteur Your Common Sense