【问题标题】:I have a deprecation error occuring on PHP 7.4.3 [duplicate]我在 PHP 7.4.3 上出现弃用错误 [重复]
【发布时间】:2020-06-07 05:39:11
【问题描述】:

我是 php 的初学者。我正在运行“Learning PHP, MySQL and JavaScript with jQuery”一书中名为 Robin's Nest 的最后一章项目。

在文件 function.php 中,函数sanitizeString 引发以下弃用错误:

已弃用:函数 get_magic_quotes_gpc() 在第 42 行的 C:\xampp2\htdocs\MyProjects\robinsnest\functions.php 中已弃用。

我的 php 版本是 7.4.3,我在 Windows 10 操作系统上使用 Xampp。我查看了该函数的 PHP 手册,发现该函数自 PHP 7.4.0 起已被弃用

如何修改此函数,使其不使用已弃用的函数 get_magic_quotes_gpc() 并且仍然获得等效功能,因为似乎没有替代函数?

 function sanitizeString($var)
  {
    global $connection;
    $var = strip_tags($var);
    $var = htmlentities($var);
    if (get_magic_quotes_gpc())
      $var = stripslashes($var);
    return $connection->real_escape_string($var);
  }

【问题讨论】:

  • 摆脱整个if 声明。
  • 这能回答你的问题吗? How can I prevent SQL injection in PHP?
  • 使用准备好的语句而不是字符串转义 - 后者会遗漏某些情况并可能导致安全漏洞。
  • @halfer,当您在 localhost 中运行 Robin's Nest 时?是不是很慢?
  • @deanstreet:我认为您的查询是针对这个问题的作者 Rilwan Smith(我的帐户附在这个问题上,因为我编辑了它)。

标签: php deprecation-warning php-7.4


【解决方案1】:

只需去掉使用该函数的代码即可。它与许多版本都不相关。

 function sanitizeString($var)
  {
    global $connection;
    $var = strip_tags($var);
    $var = htmlentities($var);
    return $connection->real_escape_string($var);
  }

请注意,这种清理方法一开始并不合适。 htmlentities() 只应在您在网页上显示数据时使用,而不是在您处理输入时使用。而$connection->real_escape_string() 应该只在将变量替换为 SQL 字符串时使用,但最好使用准备好的语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多