用法:
if(!safeProcess($_POST,array('title','body'),array('number'),$con))
return;
之后$_POST中的参数就不用担心注入问题了
实现:
function safeProcess(&$arr,$s,$n,&$con){
$all = array($s,$n);
foreach($all as $l => $w)
{
if($w)
foreach($w as $i => $v)
{
if(null == $v)
continue;
if(is_array($v))
{
for($j = $v[1]; $j < $v[2]; $j++)
{
foreach($v[0] as $k)
{
if(array_key_exists($k . $j,$arr)) {
if(0 == $l)
$arr[$k . $j] = mysql_real_escape_string(trim($arr[$k . $j]),$con);
else {
$arr[$k . $j] = trim($arr[$k . $j]);
if(!is_numeric($arr[$k . $j]) && '' != $arr[$k . $j])
{
//file_put_contents('failsafe.txt',$k . $j . "\r\n" . $arr[$k . $j]);
return false;
}
if('' == $arr[$k . $j])
$arr[$k . $j] = 'NULL';
}
}
}
}
if(isset($v[3]))
{
foreach($v[3] as $k)
{
if(array_key_exists($k,$arr))
foreach($arr[$k] as $o => $var)
{
if(0 == $l)
$arr[$k][$o] = mysql_real_escape_string(trim($arr[$k][$o]),$con);
else {
$arr[$k][$o] = trim($arr[$k][$o]);
if(!is_numeric($arr[$k][$o]) && '' != $arr[$k][$o])
{
//file_put_contents('failsafe.txt',$k . $j . "\r\n" . $arr[$k . $j]);
return false;
}
if('' == $arr[$k . $o])
$arr[$k . $o] = 'NULL';
}
}
}
}
}
else if(array_key_exists($v,$arr))
{
if(0 == $l)
$arr[$v] = mysql_real_escape_string(trim($arr[$v]),$con);
else {
$arr[$v] = trim($arr[$v]);
if(!is_numeric($arr[$v]) && '' != $arr[$v])
return false;
if('' == $arr[$v])
$arr[$v] = 'NULL';
}
}
}
}
return true;
}