if(get_magic_quotes_gpc())
{
$location_name = trim(mysql_real_escape_string(trim(stripslashes($_GET['location_name']))));
}
else
{
$location_name = trim(mysql_real_escape_string(trim($_GET['location_name'])));
}
这是我迄今的代码。在我看来,这个代码基本上是......好的。你认为我可以安全地删除内部trim()
。请尽量不要使用无尽版本的垃圾邮件本,我想尝试了解如何更好地做到这一点。什么是更好的做法以下
UPDATE
所以,阅读一些的答复后,我觉得我已经认识到了安全地从用户获取数据,保存它,然后将其重新显示了良好的方法。
,当你来到使用这个变量作为SQL字符串的一部分。当你第一次加载页面
$foo = trim($_GET['foo']);
if(get_magic_quotes_gpc())
{
$foo = stripslashes($foo);
}
这样,即使没有存储在数据库中的数据,你应该逃避它。
mysql_real_escape_string($foo);
最后,如果从数据库中读取数据,并希望将其显示为HTML,博客或论坛这样一个帖子,你应该通过使用htmlspecialchars
echo(htmlspecialchars($bar));
将任何一个变量喜欢建议使用更好的一组函数?其他显然包装这些功能,使他们更容易打电话。
我想你可以安全地删除**外**'trim()'。我不认为'mysql_real_escape_string'会附加任何不必要的空格。 – 2010-04-21 12:08:37
稍作修改。而不是“当你将* this *变量用作SQL字符串的一部分”时,而是任何变量。 **和**只有当你打算用引号括起来。但是,当然,所有这些规则一旦转向准备好的陈述就会过时,就像马诺斯所说的那样。其余的都很完美。 – 2010-04-21 14:42:46