4 changed files with 144 additions and 8 deletions
@ -0,0 +1,138 @@ |
|||||
|
<?php |
||||
|
include_once(dirname(__FILE__)."/library/publicBase.php"); |
||||
|
|
||||
|
class run extends publicBase { |
||||
|
public $control_name; |
||||
|
public $control_func; |
||||
|
|
||||
|
public function __construct() { |
||||
|
$this->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(); |
||||
|
|
||||
|
|
Loading…
Reference in new issue