1

我设置了一个数据库来存储用户输入,然后显示他们在页面上放置的内容。

$input = mysql_real_escape_string(stripslashes(addslashes($_POST["input"])));
//Later on
echo '<div>'.$input.'</div>';

我去textarea并输入了一些基本的php代码"<?php echo 'blahblah'; ?>,"并正常提交到数据库,但主页没有显示任何内容。没有'blahblah',没有标签。我希望它显示全部内容"<?php echo 'blahblah'; ?>",以便人们可以发布他们想要的任何内容。

4

2 回答 2

0

转义需要适合其上下文。

  • 插入数据库时​​,使用mysql_real_escape_string(或迁移到较新的mysqli_real_escape_string,或迁移到 PDO)或阅读参数化查询(AKA 准备好的语句)。
  • 在 HTML 中显示时,使用htmlspecialcharshtmlentities

永远不要同时使用两者,因为你会弄得一团糟,永远不要使用stripslashes(addslashes(...)),因为那没有意义。

于 2013-09-28T17:54:54.373 回答
-1

您应该尝试以下方法:

echo '<div>'.htmlentities($input).'</div>';

它将 < 和 > 等特殊字符转换为 html 实体,以便它们在浏览器中正确显示。

于 2013-09-28T16:41:51.527 回答