使用ThinkPHP框架的时候,在配置文件中设置了全局过滤函数,如下:
'DEFAULT_FILTER'=>'mysql_real_escape_string'
在用户登录里,获取用户名和密码并用mysql_real_escape_string
函数转义,但是返回的值都为空。网上查到一些文章,说是在使用mysql_real_escape_string需要先连接数据库,相关文章:
1.http://stackoverflow.com/questions/19888928/why-mysql-real-escape-stri...
2.http://.com/q/1010000000151704
如果说使用mysql_real_escape_string函数,需要先连接数据库,那为什么同样得代码,本地能运行,部署在服务器上就不行了?
使用mysql_real_escape_string函数,必须要先连接数据库,在哪都一样。
function MySQLCheck(&$value)
{
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
//示例用法:
//$user = MySQLCheck($_POST['user']);
//$pwd = MySQLCheck($_POST['pwd']);
//$sql = "SELECT * FROM users WHERE user = $user AND password = $pwd";
}
上面的写法是(我目前知道的)使用Mysql扩展的最安全的写法。