我处于一种奇怪的情况,在我的服务器中,当我用mysql_real_escape_string
向DB插入字符串然后我打印它,一切都很好,看起来像mysql制作一个自动striplashes!例如我保存tes't
然后打印它:tes't
但是在安装了php 4.2的本地主机中,我给tes\'t
提供了相同的代码。什么是mysql之谜?想知道必须如何插入和选择数据到数据库安全和清洁,永远!因为它让我真的很困惑!
答案 0 :(得分:1)
这可能取决于PHP的魔术引号设置,更多的是PHP神秘而不是MySQL神秘:)不是使用mysql_real_escape_string()
,而是可以使用更通用的功能:
function escape($s)
{
if (get_magic_quotes_gpc()) $s=stripslashes($s);
return mysql_real_escape_string($s);
}
使用此代码检查该选项是否处于活动状态并执行第一次剥离。
答案 1 :(得分:1)
你可能会启用魔术引号。你应该把它关掉,而不是试图解决这个问题。如果您无权访问服务器,则仍应以全局方式处理它。例如:
if ( ( function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase') ) {
foreach ( $_POST as $k => $v ) { $_POST[$k] = stripslashes($v); }
foreach ( $_GET as $k => $v ) { $_GET[$k] = stripslashes($v); }
foreach ( $_COOKIE as $k => $v ) { $_COOKIE[$k] = stripslashes($v); }
}
将它放在代码的开头可以确保在每个场合处理魔术引号,这意味着你不必跟踪你必须处理魔法引号的位置。
此处备注中的更多信息:http://www.php.net/manual/en/function.get-magic-quotes-gpc.php