作者:zhanhailiang 修改日期:2013-04-02
<?php class Env { public static function __callStatic($func, $args) { $dict = array('$_GET', '$_POST', '$_REQUEST', '$_COOKIE', '$_SERVER'); if(!isset($args[0])) return ''; $param = $args[0]; $isHack = (isset($args[1])) ? !!$args[1] : TRUE; $func = '$_' . strtoupper($func); if(!in_array($func, $dict)) return ''; eval("\$var = $func;"); if(!isset($var[$param])) return ''; if($isHack) { return self::hack($var[$param]); } return $var[$param]; } public static function hack($str) { if(is_array($str)) { array_walk_recursive($str, 'self::filter'); } else { $str = self::filter($str); } return $str; } public static function filter(&$str) { $str = htmlspecialchars($str); return $str; } } // 调用方法: // 获取$_GET参数:Env::get('test'); // 获取$_POST参数:Env::post('test'); // 获取$_REQUEST参数:Env::request('test'); // 获取$_COOKIE参数:Env::cookie('test'); // 获取$_SERVER参数:Env::server('test'); $_GET['test'] = array('<script type="text/javascript">alert(1);</script>', '<script type="text/javascript">alert(1);</script>'); var_dump(Env::get('test')); $_GET['test2'] = '<script type="text/javascript">alert(1);</script>'; var_dump(Env::get('test2'));