当前位置:首页 > CMS教程 > phpcms > 列表

【phpcms-v9】phpcms-v9中url路由规则文件分析:phpcms/libs/classes/par

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-24 09:56:32 浏览: 评论:0 

【phpcms-v9】phpcms-v9中url路由规则文件分析:phpcms/libs/classes/param.class.php

  1. <?php   
  2. /**  
  3.  *  param.class.php 参数处理类  
  4.  *  
  5.  * @copyright           (C) 2005-2012 PHPCMS  
  6.  * @license             http://www.phpcms.cn/license/  
  7.  * @lastmodify          2012-9-17  
  8.  */   
  9. class param {   
  10.    
  11.     //路由配置   
  12.     private $route_config = '';   
  13.        
  14.     public function __construct() {   
  15.         if(!get_magic_quotes_gpc()) {//如果为开启状态,则会自动在特殊字符前添加反斜线进行转义   
  16.             $_POST = new_addslashes($_POST);//对$_POST中的特殊字符前添加反斜线进行转义   
  17.             $_GET = new_addslashes($_GET);//对$_GET中的特殊字符前添加反斜线进行转义   
  18.             $_REQUEST = new_addslashes($_REQUEST);//对$_REQUEST中的特殊字符前添加反斜线进行转义   
  19.             $_COOKIE = new_addslashes($_COOKIE);//对$_COOKIE中的特殊字符前添加反斜线进行转义   
  20.         }   
  21.         //默认的路由规则:'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init')   
  22.         $this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route''default');   
  23.         //默认情况下不执行下面代码段   
  24.         if(isset($this->route_config['data']['POST']) && is_array($this->route_config['data']['POST'])) {   
  25.             foreach($this->route_config['data']['POST'as $_key => $_value) {   
  26.                 if(!isset($_POST[$_key])) $_POST[$_key] = $_value;   
  27.             }   
  28.         }   
  29.         if(isset($this->route_config['data']['GET']) && is_array($this->route_config['data']['GET'])) {   
  30.             foreach($this->route_config['data']['GET'as $_key => $_value) {   
  31.                 if(!isset($_GET[$_key])) $_GET[$_key] = $_value;   
  32.             }   
  33.         }   
  34.         if(isset($_GET['page'])) {   
  35.             $_GET['page'] = max(intval($_GET['page']),1);   
  36.             $_GET['page'] = min($_GET['page'],1000000000);   
  37.         }   
  38.         return true;//最终返回true   
  39.     }   
  40.    
  41.     /**  
  42.      * 获取模型  
  43.      */   
  44.     public function route_m() {   
  45.         $m = isset($_GET['m']) && !emptyempty($_GET['m']) ? $_GET['m'] : (isset($_POST['m']) && !emptyempty($_POST['m']) ? $_POST['m'] : '');   
  46.         $m = $this->safe_deal($m);   
  47.         if (emptyempty($m)) {   
  48.             return $this->route_config['m'];   
  49.         } else {   
  50.             if(is_string($m)) return $m;   
  51.         }   
  52.     }   
  53.    
  54.     /**  
  55.      * 获取控制器  
  56.      */   
  57.     public function route_c() {   
  58.         $c = isset($_GET['c']) && !emptyempty($_GET['c']) ? $_GET['c'] : (isset($_POST['c']) && !emptyempty($_POST['c']) ? $_POST['c'] : '');   
  59.         $c = $this->safe_deal($c);   
  60.         if (emptyempty($c)) {   
  61.             return $this->route_config['c'];   
  62.         } else {  //开源代码phpfensi.com 
  63.             if(is_string($c)) return $c;   
  64.         }   
  65.     }   
  66.    
  67.     /**  
  68.      * 获取事件  
  69.      */   
  70.     public function route_a() {   
  71.         $a = isset($_GET['a']) && !emptyempty($_GET['a']) ? $_GET['a'] : (isset($_POST['a']) && !emptyempty($_POST['a']) ? $_POST['a'] : '');   
  72.         $a = $this->safe_deal($a);   
  73.         if (emptyempty($a)) {   
  74.             return $this->route_config['a'];   
  75.         } else {   
  76.             if(is_string($a)) return $a;   
  77.         }   
  78.     }   
  79.    
  80.     /**  
  81.      * 设置 cookie  
  82.      * @param string $var     变量名  
  83.      * @param string $value   变量值  
  84.      * @param int $time    过期时间  
  85.      */   
  86.     public static function set_cookie($var$value = ''$time = 0) {   
  87.         $time = $time > 0 ? $time : ($value == '' ? SYS_TIME - 3600 : 0);   
  88.         $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0;   
  89.         $var = pc_base::load_config('system','cookie_pre').$var;   
  90.         $_COOKIE[$var] = $value;   
  91.         if (is_array($value)) {   
  92.             foreach($value as $k=>$v) {   
  93.                 setcookie($var.'['.$k.']', sys_auth($v'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s);   
  94.             }   
  95.         } else {   
  96.             setcookie($var, sys_auth($value'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s);   
  97.         }   
  98.     }   
  99.    
  100.     /**  
  101.      * 获取通过 set_cookie 设置的 cookie 变量   
  102.      * @param string $var 变量名  
  103.      * @param string $default 默认值   
  104.      * @return mixed 成功则返回cookie 值,否则返回 false  
  105.      */   
  106.     public static function get_cookie($var$default = '') {   
  107.         $var = pc_base::load_config('system','cookie_pre').$var;   
  108.         return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;   
  109.     }   
  110.    
  111.     /**  
  112.      * 安全处理函数  
  113.      * 处理m,a,c  
  114.      */   
  115.     private function safe_deal($str) {   
  116.         return str_replace(array('/''.'), ''$str);   
  117.     }   
  118.    
  119. }   
  120. ?>

Tags: phpcms文件规则 phpcms路由规则

分享到: