Php 为什么我必须偶尔使用htmlentities两次
有时我不得不使用htmlentities两次来转换正确的文本(参见示例),为什么会这样,还有其他解决方案吗 例如:Php 为什么我必须偶尔使用htmlentities两次,php,Php,有时我不得不使用htmlentities两次来转换正确的文本(参见示例),为什么会这样,还有其他解决方案吗 例如: <?php if('POST' == $_SERVER['REQUEST_METHOD']){ $result = db_query("INSERT INTO example (id, example) VALUES ('" . htmlentities(htmlentities($_POST['example'], ENT_QUOTES, 'UTF-8'), ENT_Q
<?php
if('POST' == $_SERVER['REQUEST_METHOD']){
$result = db_query("INSERT INTO example (id, example) VALUES ('" . htmlentities(htmlentities($_POST['example'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8') . "', '')");
}
?>
<html>
<body>
<form action="" method="POST">
<input type="text" name="example" value="<?php echo(htmlspecialchars_decode($_POST['example'])); ?>">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
我们不知道您是如何将数据放入数据库的。您应该为此使用特殊函数,例如mysql\u real\u escape\u string()来实现这一点。由于我们看不到输入,因此无法说明为什么需要这样编码。(答案是您可能不需要这样做)这是您永远不应该使用htmlentities()
的地方。如果你在那里使用它,你就做错了。也就是说,htmlentities
对于准备数据放入数据库来说是非常不合适的。使用准备好的语句和绑定的参数来转义数据(或者至少使用数据库转义例程,而不是HTML转义例程)。在将数据插入HTML文档而不是数据库之前,请使用htmlspecialchars
。