【问题标题】:Do I need to use following function for string escaping in PHP?我是否需要使用以下函数在 PHP 中进行字符串转义?
【发布时间】:2012-10-28 12:11:46
【问题描述】:
function escape($value){
    $magic_quotes_active = get_magic_quotes_gpc();
    $new_enough_php = function_exists("mysql_real_escape_string");
      if ($new_enough_php) {
        if ($magic_quotes_active) {
            $value = stripslashes($value);
            $value = mysql_real_escape_string($value);
        }
        elseif (!$magic_quotes_active) {
            $value = addslashes($value);
        }
        return $value;
    }
}

很长一段时间我一直在使用上面的函数来转义字符串?现在,我想问我是否需要使用该函数(我发现通过互联网转义适用于大多数 PHP 版本的字符串)?或者它让事情变得不必要地复杂?

【问题讨论】:

  • 如果你继续使用mysql_*函数,那么是的

标签: php string escaping


【解决方案1】:

不,事实上,您应该不惜一切代价避免使用这些函数!您应该研究的是使用准备好的语句。
检查任何mysql_* 函数的doc pages,并注意红色警告:扩展程序已开始弃用过程,建议使用PDOmysqli_*

为避免注入,您应该使用准备好的语句...阅读几篇关于此问题的文章,并了解PDOmysqli_* 的优点。也就是说,恐怕是唯一的出路……

【讨论】:

  • @YousufIqbal:我要为你 +1,只是因为我是 SO 上第一个倾听理性的人。每天都有无数的 cmets 说mysql_* 已被弃用。您是第一个接受这一点并切换到更现代、更安全、更强大和整体更好的选择而不会大惊小怪的人。谢谢你恢复了我对人类的信心! :)
【解决方案2】:

您不需要这些功能。通常使用addslashes(...) 就足够了。在特殊情况下,请参阅文档,例如推荐 @Elias Van Ootegem

【讨论】:

  • addslashes() 在您需要转义字符串以在数据库中使用时永远不要使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多