以下代码实现过滤php的$_GET 和$_POST参数
代码如下 | 复制代码 |
/** if (is_array($var)) { $var = filterHtml($var); } |
代码如下 | 复制代码 |
/用正则表达式(把脏话想替换成什么就替换成什么) $str = "aa=!!|bb=@@|cc=##|dd=$$|ee=%%|ff=^^|gg=&&"; $arr = explode('|',$str); foreach($arr as $key=>$val) { $array[] = explode('=',$val); } print_r($array); for($i=0;$i<count($array);$i++) { $a1[] = "/".$array[$i][0]."/"; $a2[] = $array[$i][1]; } unset($arr); $message= '呵呵 就是一个反社会的时代 WOCAO madE'; echo $message.'<br>'; print preg_replace($a1,$a2,$message); //支持参数个数组 但是参数区分大小写 <strong></strong> print eregi_replace($arr1,array('!!','@@','##','$$','%%','^^','&&'),$message); //不支持数组 但是参数 不区分大小写 |
<?php
代码如下 | 复制代码 |
$magic_quotes_gpc = get_magic_quotes_gpc(); @extract(daddslashes($_COOKIE)); @extract(daddslashes($_POST)); @extract(daddslashes($_GET)); if(!$magic_quotes_gpc) { $_FILES = daddslashes($_FILES); } |
daddslashes函数
代码如下 | 复制代码 |
//转译字符函数 |
?>
这个函数我想很多朋友都知道,黑客用得最多的一句了,可以解析php 代码并且运行哦,eval是函数不可在php中禁止,以前我就以为可以在php.ini禁止此函数,结果失败了。定义和用法
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
语法
?eval(phpcode)
参数 描述
phpcode 必需。规定要计算的 PHP 代码。
提示和注释
注释:返回语句会立即终止对字符串的计算。
注释:该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。
例子
?
代码如下 | 复制代码 |
<?php $string = "beautiful"; $time = "winter"; $str = 'This is a $string $time morning!'; echo $str. "<br />"; eval("$str = "$str";"); echo $str; ?> |
输出:
代码如下 | 复制代码 |
This is a $string $time morning! This is a beautiful winter morning! |
--------------------------------------------------------------------------------
eval() 函数在CodeIgniter框架里也有用到。在 /system/database/DB.php 文件中,根据系统的配置动态的定义了一个类 CI_DB,具体代码片段如下:?
代码如下 | 复制代码 |
if ( ! isset($active_record) OR $active_record == TRUE) { require_once(BASEPATH.'database/DB_active_rec.php'); if ( ! class_exists('CI_DB')) { eval('class CI_DB extends CI_DB_active_record { }'); } } else { if ( ! class_exists('CI_DB')) { eval('class CI_DB extends CI_DB_driver { }'); } } require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php'); // Instantiate the DB adapter $driver = 'CI_DB_'.$params['dbdriver'].'_driver'; $DB = new $driver($params); |
本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函式处理后的字符串会沿续到 PHP 程序结束。
本文章介绍了用户自定义的addslashes函数,他可以自动过滤,post,get过来的非法数据哦。代码如下 | 复制代码 |
@set_magic_quotes_runtime(0); $MQG = get_magic_quotes_gpc(); if(!$MQG && $_POST) $_POST = daddslashes($_POST); if(!$MQG && $_GET) $_GET = daddslashes($_GET); //转译字符函数 function daddslashes($string) { if(!is_array($string)) return addslashes($string); foreach($string as $key => $val) $string[$key] = daddslashes($val); return $string; } |