|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起。函数|处理 SQL injection成绩在ASP上可是闹得沸沸扬扬固然还有很多国际外有名的PHP法式“遇难”。至于SQL injection的概况,网上的文章太多了,在此就不作引见。
假如你网站空间的php.ini文件里的magic_quotes_gpc设成了off,那末PHP就不会在敏感字符前加上反斜杠(\),因为表单提交的内容能够含有敏感字符,如单引号('),就招致了SQL injection的破绽。在这类情形下,咱们可以用addslashes()来处理成绩,它会主动在敏感字符前添加反斜杠。
然而,下面的办法只合用于magic_quotes_gpc=Off的情形。作为一个开辟者,你不晓得每一个用户的magic_quotes_gpc是On仍是Off,假如把全体的数据都用上addslashes(),那不是“杀人如麻”了?假设magic_quotes_gpc=On,而且又用了addslashes()函数,那让咱们来看看: <?php
//假如从表单提交一个变量$_POST['message'],内容为 Tom's book
//这此到场毗连MySQL数据库的代码,本人写吧
//在$_POST['message']的敏感字符前加上反斜杠
$_POST['message'] = addslashes($_POST['message']);
//因为magic_quotes_gpc=On,所以又一次在敏感字符前加反斜杠
$sql = "INSERT INTO msg_table VALUE('$_POST[message]');";
//发送恳求,把内容保留到数据库内
$query = mysql_query($sql);
//假如你再从数据库内提取这个纪录并输入,就会看到 Tom\'s book
?>
如许的话,在magic_quotes_gpc=On的情况里,一切输出的单引号(')城市酿成(\')……
其实咱们可以用get_magic_quotes_gpc()函数等闲地处理这个成绩。当magic_quotes_gpc=On时,该函数前往TRUE;当magic_quotes_gpc=Off时,前往FALSE。至此,一定已有很多人意想到:成绩已处理。请看代码: <?php
//假如magic_quotes_gpc=Off,那就为提单提交的$_POST['message']里的敏感字符加反斜杠
//magic_quotes_gpc=On的情形下,则不加
if (!get_magic_quotes_gpc()) {
$_POST['message'] = addslashes($_POST['message']);
} else {}
?>
其实说到这里,成绩已处理。上面再说一个小技能。
有时表单提交的变量不止一个,能够有十几个,几十个。那末一次一次地复制/粘帖addslashes(),是不是费事了一点?因为从表单或URL获得的数据都是以数组模式呈现的,如$_POST、$_GET)那就自界说一个可以“风卷残云”的函数: <?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;
}
?>
就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了, |
|