|
<?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')); |
|
|