at[1]; }else{ $_GET['currency'] = 'usd'; } $_GET['allcurrencies'] = 0; return; } //匹配exchange-rates/eur/allcurrencies.html $pattern = '/^exchange-rates\/([a-zA-Z]{3})\/allcurrencies$/'; preg_match($pattern, $newurl, $mat); if( isset($mat[1]) ){ $_GET['control'] = 'huilv'; $_GET['action'] = 'exchange_rate'; $_GET['currency'] = $mat[1]; $_GET['allcurrencies'] = 1; return; } } //站点地图 $sitemap_uri = array('sitemap.xml', 'sitemap.html', 'sitemap.txt'); if(in_array($uri, $sitemap_uri)){ $u_arr = explode('.', $uri); $_GET['control'] = 'sitemap'; $_GET['action'] = $u_arr[1]; return; } $r = $this->category_url($cfg, $uri); if($r){return;} $r = $this->content_url($cfg, $uri); if($r){return;} $r = $this->tag_url($cfg, $uri); if($r){return;} $r = $this->search_url($cfg, $uri); if($r){return;} $r = $this->comment_url($cfg, $uri); if($r){return;} $r = $this->index_page_url($cfg, $uri); if($r){return;} $r = $this->tag_like_url($cfg, $uri); if($r){return;} $r = $this->user_url($cfg, $uri); if($r){return;} $r = $this->model_url($cfg, $uri); if($r){return;} $r = $this->flags_url($cfg, $uri); if($r){return;} $r = $this->space_url($cfg, $uri); if($r){return;} } //伪静态结束------------------------------------------------------------------------------------------------------ // 伪静态时,如果 $uri 有值,但没有解析到相关 $_GET 时,就提示404 if(empty($_GET) && isset($uri) && !empty($uri)) { core::error404(); } if( !isset($_GET['control']) ) { $r = $this->other_url(); if($r){return;} } } //---------------------------------------------------------------------- 以下是各模块URL解析的具体函数实现 //模型页URL解析 protected function model_url($cfg = array(), $uri = ''){ //模型信息 table=>mid $model_arr = array_flip($cfg['table_arr']); // 模型URL未设置后缀/的情况,301重定向到已设置后缀的URL if( isset($model_arr[$uri]) ) { http_location($cfg['weburl'].$uri.'/', '301'); } $_GET['control'] = 'model'; $_GET['action'] = 'index'; if(substr($uri, -1) == '/'){ $newurl = substr($uri, 0, -1); }else{ $newurl = $uri; } //模型首页URL if( isset($model_arr[$newurl]) ) { $_GET['mid'] = (int)$model_arr[$newurl]; return true; } //模型分页URL $u_arr = explode('/', $newurl); if( isset($model_arr[$u_arr[0]]) ) { $_GET['mid'] = (int)$model_arr[$u_arr[0]]; //分页 if( isset($u_arr[1]) ){ if($page = $this->page_check($u_arr[1])){ $_GET['page'] = $page; }else{ core::error404(); } } return true; } unset($_GET['control']); unset($_GET['action']); return false; } //分类URL解析 protected function categ } $uarr = explode('&', $u); $u = $uarr[0]; if(count($uarr) > 1){ array_shift($uarr); foreach ($uarr as $v){ $varr = explode('=', $v); $_GET[$varr[0]] = isset($varr[1]) ? urldecode($varr[1]) : ''; } } unset($uarr); $uarr = explode('-', $u); if(count($uarr) < 2) {core::error404();} //控制器 if(isset($uarr[0])) { $_GET['control'] = empty($uarr[0]) ? 'index': strtolower($uarr[0]); array_shift($uarr); } //方法 if(isset($uarr[0])) { $_GET['action'] = empty($uarr[0]) ? 'index': strtolower($uarr[0]); array_shift($uarr); } //伪静态下 访问动态首页、内容页URL、分类URL、标签URL 则进入404页面 $dis_control = array('index', 'show', 'cate', 'tag'); if( in_array($_GET['control'], $dis_control) && $_GET['action'] == 'index'){ core::error404(); } //参数 $num = count($uarr); for($i=0; $i<$num; $i+=2){ isset($uarr[$i+1]) && $_GET[$uarr[$i]] = $uarr[$i+1]; } return false; } //分页参数验证 private function page_check($param){ if(empty($param)){ return false; }else{ preg_match('/^page_([1-9]\d*)$/', $param, $mat); if(isset($mat[1])){ return $mat[1]; }else{ return false; } } } //正整数参数验证 private function integer_check($param){ if(empty($param)){ return false; }elseif( preg_match($this->integer_pattern, $param) ){ return true; }else{ return false; } } //模型ID验证(不含单页) private function mid_check($mid, $cfg){ if($mid > 1 && isset($cfg['table_arr'][$mid])){ return true; }else{ return false; } } } Lecms 3.0.3 错误

错误信息

错误位置

基本信息

程序流程

SQL

$_GET

$_POST

$_COOKIE

包含文件

其他信息