一步一步存储textarea mysql php

时间:2013-04-19 15:03:40

标签: php mysql textarea nl2br

所以我对所有关于使用正确的换行符存储和显示textareas以及不允许任何HTML标记的主题感到困惑。

现在我正在逃避输入,然后将其存储为文本,然后尝试使用echo nl2br($ text)显示它;它仍然无法工作。

那么应该如何处理以便输入是安全的,它不允许显示任何HTML,如何正确显示它等等?

当我运行当前代码时会发生这种情况。
第1步:
Textarea输入:
第1行

行3 第4行

ROW 6

转义变量:
$ text = $ mysqli-> real_escape_string($ _ POST ['textarea']);

步骤2:
要插入到db中的SQL查询。存储在数据库中:
行1 \ r \ n \ r \ nROW 3 \ r \ nROW 4 \ r \ n \ r \ nRORO 6

步骤3:
使用SQL获取它,使用echo nl2br($ text)显示;结果为行ROW 1 \ r \ n \ r \ nROW 3 \ r \ nROW 4 \ r \ n \ r \ nRORO 6

我猜它的存储方式禁止使用nl2br,因为实际上并没有存储任何新行,只有\ r \ n等,我在这一段时间有点丢失而且它已经迟到所以......

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:3)

在您的情况下 - 因为您想从输入中删除任何标记....

$text = strip_tags($_POST['textarea']);
$text = $mysqli->real_escape_string($text);
mysqli->query("INSERT INTO yourtable (content) VALUES ('$text')");

...但是当你想再次将它输出到浏览器时 - 你仍然需要适当地逃避它......

if ($result = $mysqli->use_result()) {
        while ($row = $result->fetch_assoc()) {
            print "<div>" . nl2br(htmlentities($row['content'])) . "</div>";
        }
}

对PHP中的数据应用任何清理的唯一时间是它离开PHP(转到数据库,转到浏览器,转到日志文件......)和方法<用于转换数据的/ em>取决于数据发送的