我正在试图弄清楚为什么这个功能无法正常工作。
每次编辑条目时都会额外添加\
。
在线服务器具有以下设置:
magic_quotes_gpc On
magic_quotes_runtime Off
magic_quotes_sybase Off
以下是代码:
function esc($s)
{
if (get_magic_quotes_gpc()) {
if (ini_get('magic_quotes_sybase'))
$s = str_replace("''", "'", $s);
else
$s = stripslashes($s);
} //if
return mysql_real_escape_string($s);
}
修改记事
我已经尝试完全删除此功能以查看它的作用......并且它做了同样的事情,所以我意识到addslashes
也在代码中用于同一事物。
额外\
因为magic_quote
是ON
答案 0 :(得分:2)
你的功能没什么意义。如果启用了魔法引号(例如,输入被转义),那么你可以忽视它。如果它没有打开,你逃脱它。所以你会得到不同的结果,这取决于你是否有魔术引用。
无论如何,依靠魔术引用是一种非常糟糕的做法。你应该:
答案 1 :(得分:1)
即使启用了magic_quotes_sybase,您可能也想要条带:
function esc($s)
{
if (get_magic_quotes_gpc()) {
if (ini_get('magic_quotes_sybase'))
$s = str_replace("''", "'", $s);
$s = stripslashes($s);
} //if
return mysql_real_escape_string($s);
}
您可能还想查看PHP的get_magic_quotes_gpc功能页面,页面上有几个用户注释,其中包含相当优雅的解决方案,可确保删除斜杠。
答案 2 :(得分:0)
好的,我已经解决了这个问题。现在是一个快速解决方案,我删除了function esc($s)
我在php.ini中将Magic_Quote
更改为OFF
我正在保持addlashes解决方案。