Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我必须偶尔使用htmlentities两次_Php - Fatal编程技术网

Php 为什么我必须偶尔使用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

有时我不得不使用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_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