1

这不起作用,我已经尝试了很多东西。htaccess 文件指定魔法关闭。下面的代码是为了快速而缩写的。

这是我的PHP:

$name=mysql_real_escape_string($_POST['textfield']['name']);

这是我的 SQL 命令:

$sql="INSERT INTO tblmentors (name) VALUES ('$name')
mysql_query($sql) or die (mysql_error());

如果表单文本字段中有撇号,则存储斜线并搞砸一切。

4

2 回答 2

3

您的应用程序中使用了一些“神奇的清理”功能来“清理”用户输入。
完全没用,它也会破坏你的数据。

你必须找到并摆脱它。

仔细检查魔术引号。在现代服务器.htaccess上是行不通的。

而且您肯定必须转向准备好的语句,而不是手动转义。

于 2013-08-16T15:09:37.883 回答
0

您可以尝试禁用魔术引号

如果失败,试试这个:

// I prefer to stripslashes() then mysql_real_escape_string().
// If you want, just skip it and do mysql_real_escape_string inside the else part.

if (function_exists ('get_magic_quotes_gpc') && get_magic_quotes_gpc())
{
   $tmp = stripslashes ($_POST['textfield']['name']);
}
else
{
   $tmp = $_POST['textfield']['name'];
}

$name = mysql_real_escape_string ($tmp);
$sql = "INSERT INTO tblmentors (name) VALUES ('{$name}')";
mysql_query ($sql) or die (mysql_error ());
于 2013-08-16T15:48:29.807 回答