www.gusucode.com > (自适应手机版)html5响应式影视文化公司源码 传播传媒企业通用类织梦模板(demo223) > (自适应手机版)html5响应式影视文化公司源码 传播传媒企业通用类织梦模板(demo223)/www2/include/request.class.php
<?php /** * 处理外部请求变量的类 * * 禁止此文件以外的文件出现 $_POST、$_GET、$_FILES变量及eval函数(用request::myeval ) * 以便于对主要黑客攻击进行防范 * * @version $Id: request.class.php 1 12:03 2010-10-28 tianya $ * @package DedeCMS.Libraries * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ // REQUEST常量,用于判断是否启用REQUEST类 define('DEDEREQUEST', TRUE); //简化 cls_request::item() 函数 function Request($key, $df='') { $GLOBALS['request'] = isset($GLOBALS['request'])? $GLOBALS['request'] : new Request; if (!$GLOBALS['request']->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; } }