在我的书(使用 PHP、MySQL、JavaScript、CSS 和 HTML5 构建动态网站)中,有一个示例说明如何在用户输入的数据进入数据库之前对其进行处理。
function mysql_fix_string($conn, $string) {
if (get_magic_quotes_gpc()) $string = stripslashes($string);
return $conn->real_escape_string($string);
}
根据作者的说法,get_magic_quotes_gpc() 检查是否启用了在字符串中转义引号的“魔术引号”属性。如果函数返回 TRUE,则触发 stripslashes 函数,该函数从字符串中删除斜杠(删除转义),以便 real_escape_string() 不会两次转义引号。
但是文档说 get_magic_quotes_gpc() 自 PHP 5.4.0 以来已被弃用。并且总是返回 FALSE。并且作者自己说,从 PHP 5.4.0 起,自动转义单引号和双引号的 magic_quotes 属性已被删除。
使用 get_magic_quotes_gpc() 有意义吗?
仅当您需要使此代码在 PHP 的博物馆版本上运行时,您正确地发现,直到 PHP 5.4.0。
如果您的项目需要更现代的 PHP 版本,那么您不需要此检查,并且您可以通过引入魔术错误来忽略此历史错误。
查看整个功能-您不需要整个功能。使用 API
prepared statements而不是手动转义值。