diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..aa4e909 --- /dev/null +++ b/admin.php @@ -0,0 +1,138 @@ +beforecheckpara(); + $this->checkpara(); + $this->action(); + $this->display(); + } + + private function beforecheckpara() { + } + + private function checkpara() { + $argv = trim(trim($_GET['argv']),'/'); + $this->control_name = 'admin'; + $this->control_func = 'formula_list'; + + if (!empty($argv)) { + $array = explode('/', $argv); + if(count($array)==1){ + $this->control_func = $array[0]=='' ? 'home' : $array[0]; + }else{ + $this->control_func = $array[1]=='' ? 'home' : $array[1]; + } + } + + // 还原GET + if (!empty($array)) { + unset($_GET['argv']); + unset($array[0]); + unset($array[1]); + + $count = count($array); + for($i=1;$i<=$count/2;$i++) { + $_GET[$array[$i*2]] = $array[$i*2+1]; + } + } + + // 如果URI带有常规传参形式,并入$_GET + $pos = strpos($_SERVER['REQUEST_URI'], '?'); + if ($pos!==false) { + $new_uri = substr($_SERVER['REQUEST_URI'], $pos+1); + $new_uri_arr = explode("&", $new_uri); + foreach($new_uri_arr as $v) { + $new_para = explode("=", $v); + $_GET[$new_para[0]] = $new_para[1]; + } + } + + if($this->control_name == 'admin' && $this->control_func !== 'login') { + $is_super = false; + if(in_array($this->control_func, $GLOBALS['super_admin_action'])) $is_super = true; + + $this->_check_login($is_super); + } + } + + private function action() { + $control_func = empty($this->control_func) ? 'home' : $this->control_func; + + // 判断控制层文件是否存在 + $control_path = dirname(__FILE__).'/control/'.$this->control_name.'.php'; + if (!file_exists($control_path)) { + die('/'.$this->control_name.'.php not exist.'); + } + include_once ($control_path); + + // 判断控制层方法是否存在 + $obj = new $this->control_name; + ##如下根据情况传递公共变量值################## + if (is_array($this->para)) { + foreach ($this->para as $k=>$v) { + $func = 'set' . $k; + $obj->$func($v); + } + } + ##如上根据情况传递公共变量值################## + if (method_exists($obj, $control_func)) { + $res = $obj->$control_func(); + } else { + die('method '.$this->control_func.' not exist.'); + } + + if ($obj->getViewFormat()=='json' && $res===false) { + echo urldecode($obj->getError()); + exit; + } + + $this->view = array_merge($this->view, $obj->getView()); + $this->viewFormat = $obj->getViewFormat(); + $this->viewTpl = $obj->getViewTpl(); + } + + private function display() { + if ($this->viewFormat=='json') { + $display = new DisplayJson(); + } elseif($this->viewFormat=='string') { + $display = new DisplayNone(); + } else { + $tpl_path = $this->viewTpl=='' ? $this->control_name.'/'.$this->control_func.'.html' : $this->viewTpl; + if(!file_exists(dirname(__FILE__) . '/view/templates/'.$tpl_path)) { // 判断模板是否存在 + die("{$tpl_path} not exist."); + } + $display = new DisplaySmarty($tpl_path); + } + + $display->setView($this->view); + $display->execute(); + } + + private function _check_login($is_super = false) { + if ($_COOKIE['uid'] !== 0 && empty($_COOKIE['token'])) header('Location: /admin/login'); + + $m_admin_user = new mAdminUser(); + $is_login = $m_admin_user->validateToken($_COOKIE['uid'], $_COOKIE['token']); + if (!$is_login) $this->ajax_json(false, '未登录或登录已经失效', array('code' => CODE_LOGIN_EXIPRE)); + + $uinfo = $m_admin_user->getAdminUserById($_COOKIE['uid']); + if (empty($uinfo)) $this->ajax_json(false, '用户不存在', array('code' => CODE_LOGIN_USER_NOT_EXIST)); + + if ($uinfo['status'] != 0) $this->ajax_json(false, '用户已被禁用'); + + if ($is_super && $uinfo['is_super'] != 1) $this->ajax_json(false, '你没有该权限'); + + $this->view['_uinfo'] = $this->para['_uinfo'] = $uinfo; + + return true; + } + } + + new run(); + + diff --git a/control/admin.php b/control/admin.php index 7bac4f5..4487a51 100644 --- a/control/admin.php +++ b/control/admin.php @@ -18,7 +18,7 @@ class admin extends publicBase { $res = $m_admin_user->checkAdminLogin($name, $password); if (!$res) $this->show_message($m_admin_user->getError(), '/admin/login'); - header('Location: /admin/formula_list'); + header('Location: /'); } } diff --git a/index.php b/index.php index 82aef90..491c99f 100644 --- a/index.php +++ b/index.php @@ -17,16 +17,14 @@ private function checkpara() { $argv = trim(trim($_GET['argv']),'/'); - if (empty($argv)) { - $this->control_name = 'index'; - $this->control_func = 'home'; - } else { + $this->control_name = 'index'; + $this->control_func = 'home'; + + if (!empty($argv)) { $array = explode('/', $argv); if(count($array)==1){ - $this->control_name = 'index'; $this->control_func = $array[0]=='' ? 'home' : $array[0]; }else{ - $this->control_name = $array[0]; $this->control_func = $array[1]=='' ? 'home' : $array[1]; } } diff --git a/view/templates/admin/include/leftmenu.html b/view/templates/admin/include/leftmenu.html index 3e54601..7e82f32 100644 --- a/view/templates/admin/include/leftmenu.html +++ b/view/templates/admin/include/leftmenu.html @@ -1,6 +1,6 @@ 菜单栏