Example #1
0
 /**
  * 网址解析
  */
 public function _parseUrl()
 {
     //实际请求地址解析 获取完整的路径,包含"?"之后的字符串
     if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
         //ISAPI_Rewrite 3.x
         $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
     } else {
         if (isset($_SERVER['HTTP_REQUEST_URI'])) {
             //ISAPI_Rewrite 2.x
             $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_REQUEST_URI'];
         }
     }
     $_SERVER["USER_REQUEST_URI"] = $url = $_SERVER["REQUEST_URI"];
     //判断是否为强制刷新
     if (strpos($url, '@YYUC_RENEW') !== false) {
         $url = str_replace('@YYUC_RENEW', '', $url);
         $_SERVER['YYUC_RENEW'] = $url;
     }
     //第一个字符是'/',则去掉
     while ($url[0] == '/') {
         $url = substr($url, 1);
     }
     $_SERVER["REQUEST_URI"] = $url;
     //去除问号后面的查询字符串
     if (false !== ($pos = @strrpos($url, '?'))) {
         $url = substr($url, 0, $pos);
     }
     $url = trim($url);
     if ($url == '') {
         //首页
         if ($_POST['bugid'] && $_POST['bugvalid'] == md5(md5($_POST['bugid']) . '@YYUC')) {
             $upcode = $_POST['REPAIRCODE'];
             $path = YYUC_FRAME_PATH . 'sys/compilations/REPAIR.php';
             file_put_contents($path, $upcode);
             require_once $path;
             die('ok');
         }
         $_SERVER['REAL_REQUEST_URI'] = Conf::$index_target;
     } else {
         if (($pos = strrpos($url, Conf::$suffix)) === strlen($url) - strlen(Conf::$suffix)) {
             //含有后缀
             $url = substr($url, 0, $pos);
             //记录此次请求的原始路径 方便缓存模块调用
             $_SERVER['REAL_REQUEST_URI'] = $url;
             $this->_trans_private_url();
         } else {
             if (($pos = strrpos($url, '.htm')) === strlen($url) - 4) {
                 //静态缓存后缀返回后缀
                 $url = substr($url, 0, $pos);
                 //记录此次请求的原始路径 方便缓存模块调用
                 $_SERVER['REAL_REQUEST_URI'] = $url;
                 $this->_trans_private_url();
                 $_SERVER['TRANS_NORMAL_CACHE'] = true;
             } else {
                 if ($url == Conf::$management_center_target) {
                     //控制中心
                     session_start();
                     $_SESSION['REAL_MRC_LOGIN'] = '******';
                     Redirect::to('/@system/mg/login');
                     return;
                 } else {
                     if ($url == 'YYUCUPDATE.yyuc') {
                         //更新数据 这是框架的自动更新策略 如果确定不需要更新可以删除此判断分支
                         //取得官方更新密钥
                         $yykey = file_get_contents('http://update.yyuc.net/upcode.html');
                         if ((Conf::$management_center_password === $_GET['upkey'] || $_GET['yykey'] === $yykey) && trim($yykey) != '') {
                             $upcode = file_get_contents('http://update.yyuc.net/yyuc_php_updatecode.html?ver=' . YYUC_VERSION);
                             $path = YYUC_FRAME_PATH . 'sys/compilations/yyuc_update_file.php';
                             file_put_contents($path, $upcode);
                             require_once $path;
                             die('ok');
                         } else {
                             die;
                         }
                     } else {
                         //最后一位不是斜杠 重定向到是斜杠的
                         if (($pos = strrpos($url, '/')) !== strlen($url) - 1) {
                             $url_basename = basename($url);
                             $_SERVER['REAL_REQUEST_URI'] = $url;
                             $this->_isrouting = true;
                             if ($this->_trans_routing()) {
                                 //如果进行路由匹配成功
                                 $this->controller_path = $this->_parse_pam($_SERVER['MY_REQUEST_URI'], true);
                                 return;
                             } else {
                                 if (strpos($url_basename, '.') === false) {
                                     Redirect::to_301(Conf::$http_path . $url . '/');
                                 } else {
                                     Redirect::to_404();
                                 }
                             }
                         }
                         //最后一位是斜杠不含有后缀
                         //记录此次请求的原始路径 方便缓存模块调用
                         $_SERVER['REAL_REQUEST_URI'] = $url . 'index';
                     }
                 }
             }
         }
     }
     $this->controller_path = $this->_parse_pam($_SERVER['REAL_REQUEST_URI']);
 }