【问题标题】:HTML Output from DB Issue数据库问题的 HTML 输出
【发布时间】:2015-07-21 19:07:53
【问题描述】:

我正在通过htmlspecialchars() 运行 CKEditor TextArea WYSIWYG 字段并将其转储到数据库中。

然后我正在获取数据库中的字段并将 HTML 输出到屏幕。为什么它输出 HTML 而没有实际使用 HTML 进行标记?

数据转储代码:

if (isset($_POST['submit'])) {

    $ticketBody = htmlspecialchars($_POST['ticketBody']);

    $sql = "INSERT INTO tickets (ticket_text) VALUES(:ticketBody)";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':ticketBody', $ticketBody, PDO::PARAM_STR);
    $stmt->execute();

}

循环遍历数据

foreach ($rows as $row) {
    <?php echo $row['ticket_text']; ?>
}

输出截图: http://screencast.com/t/wbUUS3OrW

注意:在我的echo 语句中添加htmlspecialchars_decode 有效,但会使我的文本变白!我也不知道为什么——http://screencast.com/t/JgJMaoCdyuTM

strip_tags() 函数也不起作用。

【问题讨论】:

  • 你能发布生成的 html 代码吗?解码后
  • 我认为 HTML 标签会以某种方式自动插入。如果是这样,您可以阻止它并在之后使用 PHP/CSS 对其进行格式化。我不知道 CKEditor,所以如果 CKE 是这里的罪魁祸首,我无法确定它为什么会这样做。

标签: php html mysql output


【解决方案1】:

使用 mysqli_real_scape_string 而不是 html_special_chars 这将在您的数据库保持安全的同时维护您的 html 代码和特殊字符,如果这样,您可以在下一个链接中找到文档。 p>

For you security don't click here, never!!

【讨论】:

  • "Use mysqli_real_scape_string" - OP 正在使用 PDO,不需要使用它,因为它们使用的是准备好的语句。使用你所说的,会被认为是混合 MySQL API,你不能这样做。
  • @Jjsg08 - 我正在使用 PDO。这不适用于这里。
  • “为了您的安全,请不要点击这里,永远不要!” - 嗯?!在你被否决之前修改或删除它。
  • 在这种情况下只避免使用 html_special_chars
  • @Fred-ii- 它只是一个有趣的约会;)
猜你喜欢
  • 2012-09-21
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2012-08-31
  • 1970-01-01
  • 2014-10-11
相关资源
最近更新 更多