我试图从评论框表单显示评论在我的网站上。我最初使用的是:htmlentities和htmlspecialchars停止显示文本
<?php while($comment_text = mysqli_fetch_assoc($display_comments)) { ?>
<div class="comment" style="margin-bottom: 2em;">
<div class="author">
<b><?php echo htmlentities($comment_text["author"]); ?></b>
<span class="datetime">
<i><?php echo datetime_to_text($comment_text["created"]); ?></i>
</span>
</div>
<div class="body">
<?php echo strip_tags($comment_text["body"], '<strong><em><p>'); ?>
</div>
</div>
<?php } ?>
当我在显示“body”文本时使用“strip_tags”。但是,我听说应该使用htmlentities或htmlspecialchars,因为它更安全,但每当我尝试用其中一个替换“strip_tags”时,该评论就不会显示。它只显示评论的作者,然后在其下面没有任何内容。
虽然表单工作正常,但每次发布到我的数据库时都使用“mysqli_real_escape_string”。我在数据库中看到注释,当我使用htmlentities或htmlspecialchars时,它们不会显示。
我很新的PHP,我想确保我的表单是安全的。任何帮助,将不胜感激!
更新:我试过显示不同的测试评论。什么都不会显示出来,当我用用htmlspecialchars,即使是一些简单的像“测试”
我知道最好使用hmlspecialchars,我只是不明白为什么它会阻止我的文本显示。我用真正简单的文本测试了它,没有html标签或任何东西,但仍然没有显示 – coolpup
@coolpup您是否从函数中删除了第二个参数? – jeroen
你的意思是strip_tags?我删除了它,并用htmlspecialchars替换它 – coolpup