保留并显示文本的确切输入和提交方式

时间:2014-01-10 13:32:22

标签: php mysql string echo

我在保存用户输入短段的确切外观方面遇到了很多麻烦。

我的问题是随机斜杠和html显示。当人们在键入消息时按Enter键时,“\ r \ n \”将在稍后回显时显示。我尝试修复它但现在当用户在编写消息时键入撇号时,它会以3个反斜杠插入到数据库中,因此稍后会用撇号回显3个反斜杠。令人沮丧!我想重新开始!

这就是我的工作。

  1. 用户在输入字段中键入消息并点击提交。
  2. 该消息通过php。
  3. 插入到类型为varchar(280)的数据库中
  4. 该消息通过php回显。
  5. 我尝试了许多不同的内容,例如nlbrstrip_tags以及stripslashesmysql_real_escape_string等。我可能会在某种组合中使用这些,这会混淆它。

    所以我的问题是什么是最好的方法来保存某人如何撰写文本段落以便稍后通过php回显,看起来就像他们输入的那样?

2 个答案:

答案 0 :(得分:4)

  1. 确保Magic Quotes已关闭,或者如果您无法禁用它们,请清除它们的字符串。有关详细信息,请阅读手册:http://www.php.net/manual/en/security.magicquotes.php
  2. 将文本插入数据库时​​,请将其正确地转义为SQL语法一次,或者更好地使用预准备语句。请参阅How can I prevent SQL injection in PHP?The Great Escapism (Or: What You Need To Know To Work With Text Within Text)
  3. 输出到HTML时,请使用htmlspecialchars以避免HTML注入或纯语法问题,然后使用nl2br格式化专门针对HTML的换行符。
  4. 基本上就是这样。

答案 1 :(得分:0)

在第二步,您需要使用mysql函数将其转义。

但为了正确输出它,您需要执行以下操作

<pre><?= htmlentities($mysqlRow['data']); ?></pre>

这将从数据库结果获得所需信息,并将输出它。包含所有空格和制表符以及html标签。 (如果用户输入<html>,则会输出<html>(如文字)