$pos1)
				{
					$pos = $pos1;
					break;
				}
				$pos = $pos2 + 1;
			}
			$clean .= ‘$s$’;
			$old_pos = $pos + 1;
		}
$clean .= substr($db_string, $old_pos);
$clean = trim(strtolower(preg_replace(array(‘~\s+~s’ ), array(‘ ‘), $clean)));
		//老版本的Mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以检查它
		if (strpos($clean, ‘union’) !== false && preg_match(‘~(^|[^a-z])union($|[^[a-z])~s’, $clean) != 0){
			$fail = true;
			$error=”union detect”;
		}
		//发布版本的程序可能比较少包括–,#这样的注释,但是黑客经常使用它们
		elseif (strpos($clean, ‘/*’) > 2 || strpos($clean, ‘–‘) !== false || strpos($clean, ‘#’) !== false){
			$fail = true;
			$error=”comment detect”;
		}
		//这些函数不会被使用,但是黑客会用它来操作文件,down掉数据库
		elseif (strpos($clean, ‘sleep’) !== false && preg_match(‘~(^|[^a-z])sleep($|[^[a-z])~s’, $clean) != 0){
			$fail = true;
			$error=”slown down detect”;
		}
		elseif (strpos($clean, ‘benchmark’) !== false && preg_match(‘~(^|[^a-z])benchmark($|[^[a-z])~s’, $clean) != 0){
			$fail = true;
			$error=”slown down detect”;
		}
		elseif (strpos($clean, ‘load_file’) !== false && preg_match(‘~(^|[^a-z])load_file($|[^[a-z])~s’, $clean) != 0){
			$fail = true;
			$error=”file fun detect”;
		}
		elseif (strpos($clean, ‘into outfile’) !== false && preg_match(‘~(^|[^a-z])into\s+outfile($|[^[a-z])~s’, $clean) != 0){
			$fail = true;
			$error=”file fun detect”;
		}
		//老版本的MYSQL不支持子查询,我们的程序里可能也用得少,但是黑客可以使用它来查询数据库敏感信息
		elseif (preg_match(‘~\([^)]*?select~s’, $clean) != 0){
			$fail = true;
			$error=”sub select detect”;
		}
		if (!empty($fail))
		{
			fputs(fopen($log_file,’a+’),”||$db_string||$error\r\n”);
			die(“Hacking Detect”);
		}
		else {
			return $db_string;
		}
}
/*
$sql=”select * from news where id='”.$_GET[id].”‘”;	//程序功能的SQL语句,有用户数据进入,可能存在SQL注射
check_sql($sql); //用我们的函数检查SQL语句
mysql_query($sql);		//安全的数据库执行
*/
