使用htmlentities&引用$ _POST

时间:2018-03-07 01:44:54

标签: php mysql prepared-statement html-entities

为什么许多人使用htmlentities& ENT_QUOTES?以下代码是来自人们最常见的SQLI / PHP CRUD之一的示例。他想做什么?什么目的?一两个小时值得学习的东西吗?

$firstname = htmlentities($_POST['firstname'], ENT_QUOTES);
$lastname = htmlentities($_POST['lastname'], ENT_QUOTES);
if ($stmt = $mysqli->prepare("UPDATE players SET firstname = ?, lastname = ?
WHERE id=?"))
{
$stmt->bind_param("ssi", $firstname, $lastname, $id);
$stmt->execute();
$stmt->close();
}

1 个答案:

答案 0 :(得分:2)

  

为什么许多人使用htmlentities& ENT_QUOTES?

为了回答这个问题,我将向您详细说明为什么htmlentities()使用ENT_QUOTES标志并且应该用于特定案例,例如就像这个。

'中使用字符串值为"O'Neil"的字符时,如果使用{O'Neil,则会在使用{htmlentities()时显示ENT_QUOTES(在执行任何操作之前应始终执行此操作) 1}}使用O'Neil标志,unicode撇号将插入数据库,而不是htmlentities()没有它,将无法提供所需的结果。

ENT_QUOTESO'Neil标志一起使用,可确保在数据库中输入引号。

使用准备好的声明不会产生影响;如果htmlentities()未使用ENT_QUOTES标记,则仍会以{{1}}输入。

这就是他们使用它的原因。你得到这个来源的来源是未知的,所以我不能把话放在嘴里,但那就是那个功能。

我在下面回答了类似的问题,如果您愿意,可以进一步咨询:

  

"Ok. well based on these comments it looks like htmlentities it not something really I need to worry about."

以上内容是从另一个答案的评论中删除的。

那就是说,从那以后最好保留它:

  1. 它不会造成任何伤害
  2. 如果你找到一个键盘语言使用unicode字符的人,那么你要回到" square one"并且您将输入unicode,而不是预期的值。
  3. 那个决定是你的。