SQL过滤器类

<?php

/***

 * SQL过滤器

 * Project: SQL filter

 * This is  a freeware

 * Site: http://www.cnblogs.com/lsl8966/

 * $Id: filter.class.php 108 2012-05-20 09:39:01Z lsl8966 $

 * Copyright (C) 2012-2013 gznc.edu.cn Developer Team. All Rights Reserved.

 */

class filter{

public   $str;

Private  $keyword= '=|===|==|<>|or|and|exec|insert|select|delete|update|count|*|'

                      .'%|chr|mid|master|truncate|char|declare|execute|create|drop|grant|declared|from';

 

/**

关键字统计

* @Param  string $str 源字符串

* @return array  统计出每一个关键字出现的次数和总数,并返回一个数组

*/

public function strFilter($str){

 /* 自定义关键词 */

$kArray = explode('|',$this->keyword);

$cArray = $this->full_count_words($str);

$rArray = array();

foreach( $kArray as $k=>$v ){

if($cArray[$v]>0){

$rArray[$v] =  $cArray[$v];

$rArray['count'] += $cArray[$v];

}

}

return $rArray;

}

 

/**

单引号处理

* @Param  string $str 源字符串

* @return string  替换后的字符串

*/

public function strReplace($str){

str_replace("\'","'",$str);

return str_replace("'","\'",$str);

}

 

/**

转义处理

* @Param  string $str 源字符串

* @return string  替换后的字符串

*/

public function strChecked($value)

{

/* 去除斜杠 */ 

if (!get_magic_quotes_gpc())

{  

$value = stripslashes($value);

}

/* 如果不是数字则加引号 */

if (!is_numeric($value))

  {

$value = "'" . mysql_real_escape_string($value) . "'";

  }

return $value;

}

 

/**

*统计单词个数

*@Param String $str 源字符串

*@return Array 返回一个统计过后的数组,分别记录每一个单词出现的次数

**/

public function full_count_words($str) {

 /* 返回完整数组,包含字符串里每个单词 */

$words = str_word_count($str,1);

$result = array();

foreach ($words as $w) {

 $lw = strtolower($w);

 //判断单词是否是第一次出现,是则设置为1,否则就增加1

if (!(isset($result[$lw]))) {

 $result[$lw] = 1;

 } else {

 $result[$lw]++;

 }

 }

 return $result;

}

 

/**

统计参数个数

* @return 返回参数的个数

*/

public function parsh_url(){

echo count($_REQUEST);

 }

}

 

/* 实例 */

$s = new filter;

$r = $s->strFilter($_GET[id]);

if($r['count']>0){

echo '请您进行合法输入,你的输入里面含有<font color=red>'.$r['count'].'</font>个关键词!';

} else {

echo $s->strReplace($_GET['id']);

}

?>

 

posted on 2012-05-27 11:52  lsl8966  阅读(542)  评论(0编辑  收藏  举报