94hwan-PHP框架基本原理

Source:94hwan 与众不同  Author:网络部
2011-09-20 11:51

为了方便从底层实现外部的可能的不安全因素的拦截或监控,框架要求访问GET、POST、REQUEST、FILE的东西直接用req 的方法(即是相当于路由),而不要直接用 $_GET、$_POST、$_FILES ,下面就功能说明这个类的作用:
1、成員變量
public static $cookies = array();
用户的cookie(由于系统并没有unset $_COOKIE,所以$_COOKIE是可以直接使用的)

public static $forms = array();
把GET、POST的變量合並一塊

public static $gets = array();
_GET 变量

public static $posts = array();
_POST 变量

public static $request_mdthod = 'GET';
用户的请求模式 GET 或 POST(这里是类自行返回的)

public static $files = array();
文件变量,即是相当于 $_FILES

public static $url_rewrite = true;
是否启用rewrite(允许用户使用k1--v1--k2--v2--k3--v3 这种方式来写get字符串,至于如何实际真正的rewrite,可以参考关于rewrite使用的文档)

2、成員函數

public static function init()
初始化(在init.php已經運行此函數,這裏僅作說明)

public static function myeval( $phpcode )
把 eval 重命名为 myeval,很多木马都是利用eval来实现木马的,把eval改名利于安全监控(这函数目前没使用)

public static function item( $formname, $defaultvalue = '' )
獲得指定表單值(相當于$_REQUEST,不過對key是否存在已經做了判斷,不存在時返回默認值)

public static function upfile( $formname, $defaultvalue = '' )
獲得指定文件表單上傳文件後的臨時文件名

public static function move_upload_file( $formname, $filename, $filetype = '' )
移动上传的文件(实际上类同于 move_uploaded_file)

public static function get_shortname( $formname )
獲得上傳的文件的擴展名(會先檢測圖片的mime,mime不符合的情況下,檢查原始擴展名)

public static function get_file_info( $formname, $item = '' )
获得指定文件表单的文件详细信息,即相当于返回 $_FILES[ $formname ]

public static function is_upload_file( $formname )
判断是否存在上传的文件(相当于 is_uploaded_file)

public static function check_subfix($formname, $subfix = 'csv')
檢查文件後綴是否爲指定值
 
3、简化函数 request (在 core/init.php 里定义)
为了方便更简便的获取GET、POST的变量,在init.php文件定义了一个 request  函数
request(key, default) 相当于 req::item(key, default);
實際上最終的處理是:
return !empty(req::$forms[$formname]) ? req::$forms[$formname] :  $defaultvalue;
 

...