내 웹 사이트의 의견 상자 양식에서 의견을 표시하려고합니다. 원래는 다음을 사용하여 표시했습니다 :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