hehe,我想对所有传过来了变量进行检查!有什么办法吗? 用echo $传过来的变量; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假如你传过来的变量为$A你可以这样if ($A==""){print"A为空";} while(list($key, $val)=each($HTTP_POST_VARS)){if(empty($val))die("$key is empty");} while(list($key, $val)=each($HTTP_POST_VARS)){if(empty($val))die("$key is empty");} hehe ,我没有说清楚啊!比如说啊,有又一个查询页面,我要控制它,没有合适的变量就不进行查询,避免出错啊! 就是参数检查,防止出错和非法攻击呗不仅要检查是否“空”,还要检查具体内容是否合法,例如,需要整型数值的,进来一个"xyz"肯定不行,此外还有字符串的长度是否超过(这是溢出攻击的最简单手法)等没什么捷径,在每个接收参数的PHP文件的开始处,挨个判断每个变量我的PHP页面都是以一堆if(!( check1($var1) && check2($var2) && ... ))die('哈哈,想搞破坏,没门!');之类代码开头的 同意楼上的看法。最好再结合qiushuiwuhen的思路,即使用$HTTP_*_VARS[]数组来保证变量的来源。 if(empty($var))等效与if(!$var),所以不保险因为$var为0,也会返回真,所以要注意这种情况楼主的意思是对查询变量进行校验,符合条件就查询。比如校验变量必须为a-z,1-9等if(preg_match("/^[a-z\d]$/i",$var)) echo "可以用来查询";else echo "非法字符,不能查询"; 楼上的没错,具体检查某个变量时可以用正则表达式不过最好还是先检查所有变量的长度(所有参数其实都是字符串),才能有效杜绝溢出攻击,因为一个超长的字符串传给eregi之类的函数,可能还没发现问题就崩溃了,至少也影响速度 招聘php开发工程师 一个鼠标事件,单击后让数据库中一个整形字段加一 xsl:script怎么不支持for和do循环呢? 下载按钮点一次可以下载,点第二次就没反映了.为什么啊 用php连接sql server数据库如何进行事务处理 如何知道某年某月某日是星期几? Javacript 菜鸟问题,如何在Mysql数据库中不添加重复的数据? 怎样设置apache可浏览目录属性 为什么我TP框架里面只有一个Action里面的success()里面的U失效了? 奇怪,一模一样的程序,在测试网上出错,在正式网上又没问题,会是什么原因呢? 请大家帮忙参考参考:)
你可以这样
if ($A=="")
{print"A为空";}
if(empty($val))die("$key is empty");
}
if(empty($val))die("$key is empty");
}
比如说啊,有又一个查询页面,我要控制它,没有合适的变量就不进行
查询,避免出错啊!
我的PHP页面都是以一堆if(!( check1($var1) && check2($var2) && ... ))
die('哈哈,想搞破坏,没门!');之类代码开头的
因为$var为0,也会返回真,所以要注意这种情况楼主的意思是对查询变量进行校验,符合条件就查询。比如校验变量必须为a-z,1-9等
if(preg_match("/^[a-z\d]$/i",$var))
echo "可以用来查询";
else
echo "非法字符,不能查询";
不过最好还是先检查所有变量的长度(所有参数其实都是字符串),才能有效杜绝溢出攻击,因为一个超长的字符串传给eregi之类的函数,可能还没发现问题就崩溃了,至少也影响速度