首頁  >  文章  >  後端開發  >  phpcms的adminclassphp

phpcms的adminclassphp

WBOY
WBOY原創
2016-07-29 08:55:341280瀏覽

defined('IN_PHPCMS') or exit('No permission resources.');
/* phpcms v9 登入是採用session ,保存session 有兩種方式,一種是資料庫儲存的方式,一種是文件儲存方式,預設是資料庫儲存方式。有時資料庫這種方式不行,可以在cachesconfigssystem.php 中修改sesion 的儲存方式//Session配置'session_storage' => 'mysql',將其改為//Session配置'session_storage' => 'files',反正是不能為空,否則不會登入成功。 */
$session_storage = 'session_'.pc_base::load_config('system','session_storage');//session儲存方式儲存到檔案
pc_base::load_sys_class($session_storage);  
if(param::get_cookie(param::get_cookie(param::gets) 'sys_lang')) { //語言包
    define('SYS_STYLE',param::get_cookie('sys_lang')); //在登陸的時候被設定
} else {
    define('SYS_STYLE','SYS_STYLE','zh-d cn');
}
//定義在後台
define('IN_ADMIN',true);
class admin {
    public $userid;
        self::check_admin( );  //判斷使用者是否已登陸
        self::check_priv();   //檢查使用者是否有權限
        pc_baseload_app_func('gloop','min); _M)) showmessage (L('module_not_exists'));//模組沒有提示的資訊
        self::manage_log();   
      creen();  //鎖定畫面
        self::check_hash();   //hash安全驗證
        if(pc_h::load_config('system','admin_url') & $HO_plate,_TP 'admin_url')) {
            Header("http/1.1 403 Forbidden");    //設定無權存取
    }
    }
    
    /**
     * 判斷使用者是否已登陸
    */
final public function check_admin() {
        //如果在登入介面
        //ROUTE_M 取得模型,ROUTE_C取得控制器,ROUTE_A.L. in_array(ROUTE_A, array('login', 'public_card'))) {      
            return true;//一旦回傳true,終止後續程式碼的執行有userid,roleid,如果有的話不做處理,沒有的話語返回登陸介面
            $userid = param::get_cookie('userid');
          !$_SESSION['userid'] || !$_SESSION['roleid'] || $userid != $_SESSION['userid']) showmessage(L('admin_login'),'?m=admin&c=index&a=login ');   
        }
    }
    
    /**
     * 載入後台範本
     * @param string $file 檔案名稱
     * @param string $m 模式名稱
    */
    $m = empty($m) ? ROUTE_M : $m;    
if(empty($m)) return false;   //判斷$m為空回傳false
        return PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'templates'.ATOR.M ; //回傳modules/ROUTE_M/templates/  字尾為$file.tpl.php
    }  
    
    
    * @param integer $parentid   父選單ID
     * @param integer $with_self  是否包含他自己
     * @param 選單是儲存在menu資料表中的。當我們二次開發需要新增選單時候,只需要在menu表中插入對應menu的id、name、parentid、m、c、a、data等資訊即可。當然為了讓除了超級管理員之外的角色可以存取該menu,還需要在admin_role_priv表中設定權限。
     */
     final public static function admin_menu($parentid, $with_self = 0) {
       $parent = 0) {
      $menudb = pc_base::load_model(' menu_model');  //引用model子類,實作資料庫等作業
        $site_model = param::get_cookie('site_model');     'display '=>1);  //parentid父節點id
        if ($site_model && $parentid) {   
                 //取得其全部的子選單
        $result =$menudb- >select($where,'*',1000,'listorder ASC');    //listorder就是後台排序前那個號碼來排序,可以進行編輯
        if($with_self) { 🠎 >get_one(array('id'=>$parentid));
            $result = array_merge($result2,$result); //array_merge — /權限檢查。如果是超級管理員,則全部回傳
         if($_SESSION['roleid'] == 1) return $result;  //將角色id存入session
      $array = array();
        $privdb = pc_base::load_model('admin_role_priv_model');   //呼叫model     foreach($result as $v) {
            $action = $v['a'];  
            //對公有方法,使用通過
) 含  //字首為public
                $array[] = $v;
            } else {
                //與ajax x_([a-z]+)_/',$action,$_match)) $ action = $_match[1];   
                //嘗試取得目前角色$roleid是否有對應的m、c、a的作業記錄
                $r = $privdb->get_one(array('m'=>$v['m'],'c'=>$v['c'],'a'=>$v['m'],'c'=>$v['c'],'a'=>$action,'roleid' =>$_SESSION['roleid'],'siteid'=>$siteid));
                if($r) $v   //判斷$$r。 。將$v賦值給一個$array[]
            }
        }
      
    
    /**
     * 取得選單 頭部選單導覽
     *
     * @param $parentid 選單id
     * @param 主要是用來產生相關功能表的所有子選單(一般選單顯示在所有顯示功能中顯示在上方的功能表)內容 */
      final public static function submenu($parentid = '', $big_menu = false) {
        if(empty($parentid)) {    
            $menudb =  r = $menudb->get_one(array('m'=> ROUTE_M,'c'=>ROUTE_C,'a'=>ROUTE_A));
            $parentid = $_GET['menuid'] = $ = self::admin_menu ($parentid,1);   //父選單$parentid中的名字,包含父親選單
        
        $numbers = count($array); numbers==1 && !$big_menu) return '';  
        $string = '';
        $               if (!isset($_GET ['s'])) {
                $classname = ROUTE_M == $_value['m'] && ROUTE_C == $_value['c'] && ROUTE_A class $OUTue[E_A'on 'value "' : '';
            } else {
                $_s = !empty($_value['p.') _strue ['strue)',_value : '';
                $classname = ROUTE_M == $_value['m'] && ROUTE_C == $_value['c'] && ROUT_A == $_valueA == $_value['c'] && ROUT_A == $_value $_s ? 'class="on"' : '';
            }
            if($_value[  if($classname ) {
                $string .= "".L($_value['name'])."|"; else {
                $string .= "".L($_value['name'])." |";
            }
        }
       $string =
    }  
    /**
     * 目前地點
     *
     * @param $id 選單id
    */
//利用遞歸,取得某一個menu的所有父選單層級,作為HTML片段回傳
     final public static function current_pos($id) {
         ->get_one(array('id'=>$id),'id,name,parentid');
        $str = '';
       if current_pos($r['parentid']);
        }
        return $str.L($r['name']).' > ';
         
    
    
    /**
     * 取得目前的站點ID
    */
      final public static function get_siteid() {
)     
    /**
收到*/
    final public static function get_siteinfo($siteid = '' ) {
        if ($siteid == '') $siteid = self::get_siteid();
        if (empty($siteid)) return false; admin' );
        return $sites->get_by_id($siteid);
    }
    final public   );
        $siteid = explode(' ,',$sites->get_role_siteid($_SESSION['roleid']));
        return current($siteid);
     }
/  a、的操作權限
    final public function check_priv() {
        //登錄界面:一旦返回true,將終止後續代碼的執行   
        if(ROUTE_M =='admin' && ROUTE_C =='index' && in_array(ROUTE_A, array('login', 'init', 'public_card'))) return true;
        
        //roleid:1 超級管理者== 1) return true;
        $siteid = param::get_cookie('siteid');    //站點id
      model('admin_role_priv_model');
        if (preg_match('/^public_/',ROUTE_A)) return true; //如果以public_開頭的方法
        if(preg_match('/^ajax_([a-z]+)_/',ROUTE_A,$_match) { //以ajax_開頭的方法,則只截取後半段作為查詢條件
            $action = $_match[1];    //配對結果     ,  }的權限記錄
        $r =$privdb->get_one(array('m'=>ROUTE_M,'c'=>ROUTE_C,'a'=>$action,'roleid'=>$_SESSION['roleid'], 'siteid'=>$siteid));
        if(!$r) showmessage('您沒有權限操作該項','blank');
    } _inalf /** ) {
        //判斷是否記錄
        $setconfig = pc_base::load_config('system');
        //是否記錄後台作業日誌
             $action = ROUTE_A;  // 
             if($action == '' || strchr($action,'public') || $action == 'init'  ;   / /以上幾種方法除外
            }else {
                $ip = ip();
                    $username = param::get_cookie('admin_username');//使用者名稱
                $userid = isset($_SESSION['userid']) ? $_SESSION['userid'] : '';//用戶id
                     $url = '?m='.ROUTE_M.'&c='.ROUTE_C.'&a='.ROUTE_A;   //操作地址
             'userid'=>$userid,'action'=>ROUTE_C, 'querystring'=>$url,'time'=>$time,'ip'=>$ip));   //記錄作業日誌入庫
            }
          }
    }
    
    /**
     *
     * 後台IP禁止判斷 ...
    */
   _base::load_model('ipbanned_model');
        $this->ipbanned->check_ip() ;
     }
     /**
      * 檢查鎖定螢幕狀態
     */
     final private function lock_screen() {
  ) {
            if(preg_match ('/^public_/', ROUTE_A) || (ROUTE_M == 'content' && ROUTE_C == 'create_html') || (ROUTE_M == 'release') || (ROUTE_A == 'login') || ( ROUTE_M == 'search' && ROUTE_C == 'search_admin' && ROUTE_A=='createindex')) return true;
            showmessage(L('admin_login'),'m    ”
}
    /**
      * 檢查hash值,驗證使用者資料安全性
     */
     final private function check_hash() {
         //如果是公有方法、管理首頁、登陸等不需要使用首頁認證的, _/ ', ROUTE_A) || ROUTE_M =='admin' && ROUTE_C =='index' || in_array(ROUTE_A, array('login'))) {    
        //不管是GET還是POST來的pc_hash,如果能和服務端pc_hash對應的上,則pass
        if(isset($_GET['pc_hash']) && $_SESSION['pc_hash'] != '' && ($_SESSION['pc_SESSION['pc_SESS] $_GET['pc_hash'])) {
            return true;
        } elseif(isset($_POST['pc_hash']) &pc_hash']) &pc_S. = $_POST['pc_hash'])) {
            return true;
        } else {
    
        }
    }
    
    /**
     * 後台資訊清單範本
     * @param string $id 被選取的範本名稱
     * @param string $str form表單中的屬性名
     * @param string $str form表單中的屬性名稱
  */



     最終公用函數 admin_list_template($id = '', $str = '') {
        $templatedir = PC_PATH.DIRECTORY_SEPARATOR.')'5aTOR.')'5. PARATOR;
        $預= 'content_list';
        $templates = glob($templatedir.$pre.'*.tpl.php');
        if(empty($templates)) return falsename; s );
        $templates = array();  
        if(is_array($files)) {
            foreach($files as $file                 $templates[$key] = $file;
            }
            }
     
        ksort($templates);
        返回表單::select($templates, $id, $str,L('please_select  
以上就介紹了phpcms的adminclassphp,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn