我試圖從評論框表單顯示評論在我的網站上。我最初使用的是: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