isinit) { $GLOBALS['request']->Init(); } return $GLOBALS['request']->Item($key, $df); } class Request { var $isinit = false; //用户的cookie var $cookies = array(); //把GET、POST的变量合并一块,相当于 _REQUEST var $forms = array(); //_GET 变量 var $gets = array(); //_POST 变量 var $posts = array(); //用户的请求模式 GET 或 POST var $request_type = 'GET'; //文件变量 var $files = array(); //严禁保存的文件名 var $filter_filename = '/\.(php|pl|sh|js)$/i'; /** * 初始化用户请求 * 对于 post、get 的数据,会转到 selfforms 数组, 并删除原来数组 * 对于 cookie 的数据,会转到 cookies 数组,但不删除原来数组 */ function Init() { global $_POST,$_GET; //处理post、get $formarr = array('p' => $_POST, 'g' => $_GET); foreach($formarr as $_k => $_r) { if( count($_r) > 0 ) { foreach($_r as $k=>$v) { if( preg_match('/^cfg_(.*?)/i', $k) ) { continue; } $this->forms[$k] = $v; if( $_k=='p' ) { $this->posts[$k] = $v; } else { $this->gets[$k] = $v; } } } } unset($_POST); unset($_GET); unset($_REQUEST); //处理cookie if( count($_COOKIE) > 0 ) { foreach($_COOKIE as $k=>$v) { if( preg_match('/^config/i', $k) ) { continue; } $this->cookies[$k] = $v; } } //unset($_POST, $_GET); //上传的文件处理 if( isset($_FILES) && count($_FILES) > 0 ) { $this->FilterFiles($_FILES); } $this->isinit = TRUE; //global变量 //self::$forms['_global'] = $GLOBALS; } /** * 把 eval 重命名为 myeval */ function MyEval( $phpcode ) { return eval( $phpcode ); } /** * 获得指定表单值 */ function Item( $formname, $defaultvalue = '' ) { return isset($this->forms[$formname]) ? $this->forms[$formname] : $defaultvalue; } /** * 获得指定临时文件名值 */ function Upfile( $formname, $defaultvalue = '' ) { return isset($this->files[$formname]['tmp_name']) ? $this->files[$formname]['tmp_name'] : $defaultvalue; } /** * 过滤文件相关 */ function FilterFiles( &$files ) { foreach($files as $k=>$v) { $this->files[$k] = $v; } unset($_FILES); } /** * 移动上传的文件 */ function MoveUploadFile( $formname, $filename, $filetype = '' ) { if( $this->IsUploadFile( $formname ) ) { if( preg_match($this->filter_filename, $filename) ) { return FALSE; } else { return move_uploaded_file($this->files[$formname]['tmp_name'], $filename); } } } /** * 获得文件的扩展名 */ function GetShortname( $formname ) { $filetype = strtolower(isset($this->files[$formname]['type']) ? $this->files[$formname]['type'] : ''); $shortname = ''; switch($filetype) { case 'image/jpeg': $shortname = 'jpg'; break; case 'image/pjpeg': $shortname = 'jpg'; break; case 'image/gif': $shortname = 'gif'; break; case 'image/png': $shortname = 'png'; break; case 'image/xpng': $shortname = 'png'; break; case 'image/wbmp': $shortname = 'bmp'; break; default: $filename = isset($this->files[$formname]['name']) ? $this->files[$formname]['name'] : ''; if( preg_match("/\./", $filename) ) { $fs = explode('.', $filename); $shortname = strtolower($fs[ count($fs)-1 ]); } break; } return $shortname; } /** * 获得指定文件表单的文件详细信息 */ function GetFileInfo( $formname, $item = '' ) { if( !isset( $this->files[$formname]['tmp_name'] ) ) { return FALSE; } else { if($item=='') { return $this->files[$formname]; } else { return (isset($this->files[$formname][$item]) ? $this->files[$formname][$item] : ''); } } } /** * 判断是否存在上传的文件 */ function IsUploadFile( $formname ) { if( !isset( $this->files[$formname]['tmp_name'] ) ) { return FALSE; } else { return is_uploaded_file( $this->files[$formname]['tmp_name'] ); } } /** * 检查文件后缀是否为指定值 * * @param string $subfix * @return boolean */ function CheckSubfix($formname, $subfix = 'csv') { if( $this->GetShortname( $formname ) != $subfix) { return FALSE; } return TRUE; } }