Browse Source

录医案管理员后台访问入口文件改造

pull/23/head
kuaileWu 7 months ago
parent
commit
5e1c08c71d
  1. 138
      admin.php
  2. 2
      control/admin.php
  3. 10
      index.php
  4. 2
      view/templates/admin/include/leftmenu.html

138
admin.php

@ -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();

2
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: /');
}
}

10
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];
}
}

2
view/templates/admin/include/leftmenu.html

@ -1,6 +1,6 @@
<b>菜单栏</b>
<div class="input-search">
<a href_flag='/admin/formula_list' href="/admin/formula_list">药方列表</a>
<a href_flag='/' href="/">药方列表</a>
</div>
<div class="input-search">
<a href_flag='/admin/unit_conv' href="/admin/unit_conv">计量单位转换</a>

Loading…
Cancel
Save