麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
应对SQL injection
悬赏分:20 - 2007年06月08日

我在超越上看到过这样一个函数,据称是应对SQL injection

函数如下:
<?php
function quotes($content)
{
//如果magic_quotes_gpc=Off,那么就开始处理
if (!get_magic_quotes_gpc()) {
//判断$content是否为数组
if (is_array($content)) {
//如果$content是数组,那么就处理它的每一个单无
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
//如果$content不是数组,那么就仅处理一次
addslashes($content);
}
} else {
//如果magic_quotes_gpc=On,那么就不处理
}
//返回$content
return $content;
}

$ly_bt=quotes($_POST['bt']);
$ly_zz=quotes($_POST['name']);
$ly_mail=quotes($_POST['mail']);
$ly_tel=quotes($_POST['tel']);
$ly_nr=quotes($_POST['nr']);
?>
使用这个函数时
echo $ly_bt; 可以看到已经在'前面加了\
但是执行插入记录后
//进行入库操作
$sql="insert into d_ly (d_rq,d_ip,d_lb2,d_zt,d_zz,d_tel,d_mail,d_nr) values ('".$ly_rq."','".$ly_ip."',".$ly_lb2.",'".$ly_bt."','".$ly_zz."','".$ly_tel."','".$ly_mail."','".$ly_nr."')";
$result=mysql_query($sql);
从数据库中取出显示时,发现 ' 的前面并没有\
这是怎么回事?

我的php.ini中magic_quotes_gpc=on

但是我用
addslashes()
插入记入uuu'000,再取出察看时并没有出现uuu \ '000

这是怎么回事?
谁能详细说明一下magic_quotes_gpc的含义?是不是magic_quotes_gpc=on就可以基本上对抗SQL injection 呢?
那位大虾能告诉我一下谢谢!

提问者:duanyanran   06-08 07:07
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
34 + 33 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM