所以,我有一些非常基本的代码,我无法完全正确地工作。我正在使用 ezSQL 类 ( http://justinvincent.com/ezsql ),但这很好用。一切正常,除非我尝试使用清理功能(get_post)。当我调用函数 get_post 时,我正在使用另外两个函数 sanitizeString 和 sanitizeMySQL。如果我只是 $_POST 数据到 SQL 表,它工作正常。只有当我通过 post 功能时,它才会中断。这是发布位:
if (isset($_POST['username']) &&
isset($_POST['password']))
{
$username = get_post('username');
$password = get_post('password');
$db->query("INSERT INTO users VALUES ('$username', '$password')");
}
就像我说的,我正在使用一个类(这就是 $db->query 的内容),但它工作得很好。如果我将代码更改为:
if (isset($_POST['username']) &&
isset($_POST['password']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$db->query("INSERT INTO users VALUES ('$username', '$password')");
}
它工作正常。以下是我用于消毒的三个功能:
// Sanitize Functions
function sanitizeString($var)
{
if (get_magic_quotes_gpc()) $var = stripslashes($var);
$var = htmlentities($var);
$var = strip_tags($var);
return $var;
}
function sanitizeMySQL($var)
{
$var = mysql_real_escape_string($var);
$var = sanitizeString($var);
return $var;
}
function get_post($var)
{
return sanitizeMySQL($_POST['$var']);
}
我什至尝试将 get_post 函数更改为包含 mysql_real_escape_string 返回,但即使这样也不起作用。另外,我想我应该澄清当我尝试使用 get_post 函数时实际发生的情况。它似乎在表中创建了一个新行,但单元格完全为空。希望你们能阐明我做错了什么!我是一个非常有经验的前端开发人员,但我有点学习服务器端的东西。谢谢 :)
ninjaEdit:我发现了这个问题这两个功能是否过分消毒?这绝对有助于使我的消毒功能更好,但它并不能真正帮助我了解为什么我的首先不能工作。