コード例 #1
0
ファイル: context.php プロジェクト: xtgss007/qeephp2_x
 /**
  * 根据服务器运行环境,重新初始化 QContext 对象
  *
  * @param boolean $full_init 是否进行完全的初始化
  */
 function reinit($full_init = false)
 {
     if ($full_init) {
         $this->_params = array();
         $this->_router = null;
     }
     self::$_request_uri = null;
     self::$_base_uri = null;
     self::$_base_dir = null;
     self::$_url_mode = null;
     // 如果有必要,初始化路由服务
     $url_mode = strtolower(Q::ini('dispatcher_url_mode'));
     if (is_null($this->_router) && ($url_mode == self::URL_MODE_PATHINFO || $url_mode == self::URL_MODE_REWRITE)) {
         $this->_router = new QRouter();
         $this->_router->import(Q::ini('routes'), 'global_default_routes');
         $result = $this->_router->match('/' . ltrim($this->pathinfo(), '/'));
         if ($result) {
             foreach ($result as $var => $value) {
                 if (strlen($value) === 0) {
                     continue;
                 }
                 if (!isset($_GET[$var]) || strlen($_GET[$var]) === 0) {
                     $_GET[$var] = $_REQUEST[$var] = $value;
                 }
             }
         }
     }
     self::$_url_mode = $url_mode;
     // 从 $_GET 中提取请求参数
     $keys = array_keys($_GET);
     if (!empty($keys)) {
         $keys = array_combine($keys, $keys);
         $keys = array_change_key_case($keys);
     }
     $udi = array();
     $udi[self::UDI_CONTROLLER] = isset($keys[self::UDI_CONTROLLER]) ? $_GET[$keys[self::UDI_CONTROLLER]] : null;
     $udi[self::UDI_ACTION] = isset($keys[self::UDI_ACTION]) ? $_GET[$keys[self::UDI_ACTION]] : null;
     $udi[self::UDI_MODULE] = isset($keys[self::UDI_MODULE]) ? $_GET[$keys[self::UDI_MODULE]] : null;
     $udi[self::UDI_NAMESPACE] = isset($keys[self::UDI_NAMESPACE]) ? $_GET[$keys[self::UDI_NAMESPACE]] : null;
     $this->changeRequestUDI($udi);
 }
コード例 #2
0
ファイル: qcontext.php プロジェクト: fchaose/qeephp
 /**
  * 根据 php.ini 中的 magic quotes gpc 设置去除超全局变量中自动添加的转义符
  */
 private function _initOneTime()
 {
     if (self::$_root) {
         return;
     }
     self::$_root = $this;
     // 禁止 magic quotes
     set_magic_quotes_runtime(0);
     // 处理被 magic quotes 自动转义过的数据
     if (get_magic_quotes_gpc()) {
         $in = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
         while (list($k, $v) = each($in)) {
             foreach ($v as $key => $val) {
                 if (!is_array($val)) {
                     $in[$k][$key] = stripslashes($val);
                     continue;
                 }
                 $in[] =& $in[$k][$key];
             }
         }
         unset($in);
     }
     $url_mode = strtolower($this->getIni('dispatcher_url_mode'));
     if ($url_mode == self::URL_MODE_PATHINFO || $url_mode == self::URL_MODE_REWRITE) {
         $this->_router = new QRouter($this);
         $result = $this->_router->match($this->getPathinfo());
         if ($result) {
             foreach ($result as $var => $value) {
                 if (empty($_GET[$var])) {
                     $_GET[$var] = $_REQUEST[$var] = $value;
                 }
             }
         }
         self::$_url_mode = $url_mode;
     } else {
         self::$_url_mode = self::URL_MODE_STANDARD;
         $this->_router = null;
     }
 }