PHP后台管理类(修改中)

<?
class Admin{//begin class
 var $action="";
 var $table="";
 var $pk_val=0;
 var $pk_name="id";
 var $select_sql;
 
 var $array_add=array();
 var $array_update=array();
 var $array_query=array();
 var $array_oder_by=array();
 var $array_tpl=array();
 var $array_valid=array();
 
 var $caption="";
 var $html_header='';
 var $html_query='';
 var $html_cmd='';

 var $POST;
 var $ME;
 
function int_pk_val(){
 global $_GET,$_POST;
 if($this->pk_val)return;

 if(!empty($_GET['edit_id'])){
  $this->pk_val=$_GET['edit_id'];
  return;
 }

 if(!empty($_POST['id'])){
  $this->pk_val=$_POST['id'];
  return;
 }
}

function Admin($action,$table,$select_sql){
 global $_POST,$ME;
 /*foreach($_POST as $key=>$val){
  $_POST[$key]=trim(nvl($val));
 }*/
 $this->POST=$_POST;
 $this->ME=$ME;
 $this->action=$action;
 $this->table=$table;
 $this->select_sql=$select_sql;

 $this->int_pk_val();
}

function execute(){
 if(empty($this->action)) $this->display();
 else{
  $action=$this->action;
  $this->$action();
 }
}

function display(){
 /*显示数据*/
 global $CFG,$_POST,$ME;

 $where=$this->get_where($this->select_sql);
 $this->select_sql.=$where;

 $p=new SXPaging($this->select_sql,nvl($_POST['RequirePage']),nvl($_POST['PageSize']));
 if($this->html_cmd)
  $html_cmd="<INPUT TYPE=hidden NAME=CMD>".$this->html_cmd;
 else
  $html_cmd="|<INPUT TYPE=hidden NAME=CMD>
  <INPUT TYPE=button VALUE=添加 οnclick=this.form.CMD.value='add';this.form.submit();>
  <INPUT TYPE=button VALUE=删除 οnclick=this.form.CMD.value='del';this.form.submit();>";

 include("$CFG->dirtpl/admin/header.html");
 echo("<Form method=post action=$ME>");
 $str=$p->GetPrint('№',$this->caption,0);

 if($str)
  $str.=$html_cmd.$this->html_query;
 else{
  $str=$this->display_no_data($where);
 }
 echo("$str");
 echo $this->get_query_state();
 echo("</Form>");

 include("$CFG->dirtpl/admin/footer.html");
}


function add($errormsg=''){
 global $CFG,$_POST,$ME;
 $CMD='insert';
 $form=(empty($this->array_tpl['form_add']))?$this->array_tpl['form']:$this->array_tpl['form_add'];
 include($this->array_tpl['header']);
 include($this->array_tpl['form_header']);
 include($form);
 include($this->array_tpl['footer']);
}

function insert(){
 /*插入数据*/
 global $CFG,$_POST,$ME,$DOC_TITLE;
 $sql_add=$this->get_add_sql();
 
 $errormsg=$this->valid();
 if(empty($errormsg)){
  $qid=db_query($sql_add);
  $pk_val=db_insert_id($pk_val);
  set_logs($this->caption,LOG_TYPE_INSERT,$this->table,$pk_val);
  $this->go_to_me();
  return;
 }

 $this->add($errormsg);
}

function check_operator($table,$pk_val){
 $operator=$_SESSION['SESSION']['user']['id'];
 $sql="select 1 from $table where $this->pk_name=$pk_val and operator=$operator";
 $qid=db_query($sql);
 return db_fetch_array($qid);
}

function edit($errormsg=''){
 global $CFG,$_POST,$ME,$_GET,$DOC_TITLE;
 
 if(empty($this->pk_val))die("编辑ID没有,是程序错了");

 $CMD="update";

 $sql="select * from $this->table where $this->pk_name=$this->pk_val";
 $qid=db_query($sql);
 $_POST=db_fetch_array($qid);
 
 if(empty($_POSt['id']))$_POSt['id']=$this->pk_val;
 
 $form=empty($this->array_tpl['form_update'])?$this->array_tpl['form']:$this->array_tpl['form_update'];
 include($this->array_tpl['header']);
 include($this->array_tpl['form_header']);
 include($form);
 include($this->array_tpl['footer']);
}

function update(){
 /*修改*/
 global $CFG,$_POST,$ME;
 $sql=$this->get_update_sql();
 
 $errormsg=$this->valid();
 if(empty($errormsg)){
  if(!$this->check_operator($this->table,$this->pk_val)){
   $errormsg.="<li>不是你添加的数据,你没权修改!";
  }
 }
 if(!empty($errormsg)){
  $this->edit($errormsg);die();
 }
 db_query($sql);

 set_logs($this->caption,LOG_TYPE_UPDATE,$this->table,$this->pk_val);
 $this->go_to_me();
}

function del($ctl_name='',$table='',$real_do=0){
 /*删除*/
 global $_POST,$_SESSION;
 $operator=$_SESSION['SESSION']['user']['id'];
 if(!$ctl_name)$ctl_name='del_id';
 if($table)$this->table=$table;
 if(!empty($_POST[$ctl_name])){
  //$in=implode(',',$_POST[$ctl_name]);
  /*$sql='';
  if($real_do){
   $sql="delete from $this->table where $this->pk_name in ($in)";
  }else{
   $sql="update $this->table set isdeleted=$operator where  $this->pk_name in ($in)";
  }
  
  db_query($sql);*/
  $can_delete_rows="";
  foreach($_POST[$ctl_name] as $pk_val){
   if($this->check_operator($this->table,$pk_val)){
    $sql="delete from $this->table where $this->pk_name = $pk_val";
    db_query($sql);
    set_logs($this->caption,LOG_TYPE_DELETE,$this->table,$pk_val);
   }else{
    $can_delete_rows.="$pk_val,";
   }
  }
 }
 if($can_delete_rows)$can_delete_rows="主键为 $can_delete_rows 的数据非您添加,您不能删除!";
 $this->go_to_me($can_delete_rows);
}

function _print(){}
function valid(){
 $error_msg="";
 $error_msg.=$this->valid_array_valid();
 return $error_msg;
}

function valid_array_valid(){
  /*验证数据有效性*/
 global $_POST;
 $error_msg="";
 $str='';
 $count=count($this->array_valid);
 for($i=0;$i<$count;$i++){

  $item=$this->array_valid[$i];

  switch($item['valid']){
   case 'numeric':
    if(!is_numeric($this->POST[$item['field']]))$error_msg.="<li>$item[chinese]不是数字";
    break;
   default:
    if(empty($this->POST[$item['field']]))$error_msg.="<li>$item[chinese]不可为空";
    break;
  }

 }
 if(!empty($error_msg))$error_msg."<br>请您仔细检查.";
 return $error_msg;
}

function get_where($sql=''){
 global $_POST;
 $where='';
 foreach ($this->array_query as $val){
  if(!empty($_POST[$val])) $where.=" and ".substr($val,2) ." like '%$_POST[$val]%'";
 }
 
 $where.=" and $this->table.isdeleted!=1";

 if(eregi('where',$sql)) return $where;

 return " where ".substr($where,4);
}

function get_order_by(){return '';}


function get_add_sql(){
 global $_POST,$_SESSION;
 $fields=implode(",",$this->array_add);
 $values="";
 $operator=$_SESSION['SESSION']['user']['id'];
 foreach($this->array_add as $val){
  $val=trim($val);
  $values.="'$_POST[$val]',";
 }

 $values=substr($values,0,strlen($values)-1);

 $sql="insert into $this->table (operator,$fields) values($operator,$values)";
 return $sql;
}

function get_update_sql(){
 global $_POST;
 $this->array_update=empty($this->array_update)?$this->array_add:$this->array_update;
 $sql="update $this->table set ";

 foreach($this->array_update as $val){
  $val=trim($val);
  $sql.=" $val='$_POST[$val]',";
 }
 
 $sql=substr($sql,0,strlen($sql)-1);
 $pk=$this->pk_name;
 $sql.=" where $pk='$_POST[$pk]'";
 return $sql;
}


function set_select_sql($val){$this->select_sql=$val;}
function set_array_add($val){$this->array_add=$val;}
function set_array_update($val){$this->array_update=$val;}
function set_array_query($val){$this->array_query=$val;}
function set_array_valid($val){$this->array_valid=$val;}

function set_oder_by($val){$this->array_oder_by=$val;}
function set_caption($val){$this->caption=$val;}
function set_pk_val($val){if(!empty($val))$this->pk_val=$val;}
function set_pk_name($val){if(!empty($val))$this->pk_name=$val;}

function set_html_query($val){
 global $ME;
 $this->html_query=$val;
 $this->html_query.="<INPUT TYPE=button VALUE='查询' οnclick=this.form.submit();>
 <INPUT TYPE=button VALUE='重置' οnclick=/"location='$ME'/">";
}
function set_html_cmd($val){$this->html_cmd=$val;}
function set_array_tpl($val){$this->array_tpl=$val;}

function get_query_state(){
 global $_POST;
 $js_state="<script language=javascript>try{";

 foreach($this->array_query as $val){
  if(strlen(nvl($_POST[$val])))$js_state.="document.all.$val.value='$_POST[$val]';/n";
 }
 $js_state.="}catch(e){}</script>";
 return $js_state;
}


function display_no_data($where){
 global $ME;
 if(!empty($where)){
  return "<input type=button value='本查询没有数据,请重新查询' οnclick=/"location='$ME'/">";
 }else return "<input type=button value='没有数据,请添加数据'  οnclick=/"location='$ME?CMD=add'/">";
}

function go_to_me($msg=''){
 global $ME;
 if(!empty($msg))$msg="alert('$msg');";
 echo "<script language=javascript>$msg;location='$ME';</script>";
 die();
}

}//end class

?>

thinkPHP开发的后台管理系统 主要针对PHP入门级程序员开发适用,主要特点集成了AUTH多对多权限管理控制, 比较细分明确了 权限控制=》权限节点 、角色=》角色权限、管理员=》角色 的管理结构。 后台布局主要应用了Layuid的简明小清新,还支持5种风格切换、全屏浏览、锁屏等炫酷功能。 相信AndPHP.admin 能让你的后台开发也能舒爽起来,另外补充一点,对于目前大多的共享后台都集成封装了如表单、 列表等主要构件方法,说是为了方便快速布置后台,当对于入门来说,学习成本也是有的,阅读性也有牺牲,仁者见仁吧, 就是想告诉大家AndPHP.admin没有这样做,主要好处,多查阅ThinkPHP5.1及Layui2.x文档根据已有文件基本就能活学应用啦!! ( 打脸了,admin2.0对于FORM\LIST进行了方法集成,但保留了1.0的部分硬编输出,你可以更好的应对,快速的开发!) //============= AndPHP内容管理系统基于ThinkPHP、结合Layui等优秀开源项目开发; 将包含系统设置,权限管理,模型管理,数据库管理,栏目管理,会员管理,网站功能,模版管理,微信管理相关模块。 官网在线演示: http://andphp.com 测试账号:test 测试密码:123456 admin2.0纯净版发布了 ThinkPHP核心框架更新至5.1.12, 精简后台功能模块,极简方便开发者 =)基于后台管理员登录/AUTH权限管理/系统配置及后台FORM、LIST公共方法 =)基于前台用户登录/AUTH权限管理/会员心(集成积分管理、签到等)基本用户操作属性 =) 集成一键安装,localhost/install/index.php 轻度强迫症的我对代码规范有这一定的要求,所以一定程度上做好了备注标示,目前文档整理,有问题请进QQ群交流学习! About, AndPHP采用ThinkPHP5.15开发,ThinkPHP5.15采用全新的目录结构、架构思想,引入了 很多 的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载。 正因为ThinkPHP的 这些新特性, 从而使得ANDPHP的执行速度成倍提高。 UI方面,AndPHP采用了最受欢迎的Layui,Layui用于开发响应式布局、移动设备优先的 WEB 项目。 简洁、直观、强悍的前端开发框架,让ANDPHP后台界面更加美观,前台布局 更加爽快,开发更迅速、简单。 Tell U, 我们的目标:致力于为个人和小型企业打造全方位的PHP企业级开发解决方案。
Yovae后台管理程序,程序大部分采用面向对象思想编写,MVC没有做到,有涉及Ajax技术,不过不多,这个程序我写了3天左右。 这个管理程序对于php的新手或想有进一步提升的朋友还是有蛮大的启发的,注释很少,我都用英文注释,o(︶︿︶)o 唉赶潮流,尽管英文不怎么样。程序源码只有后台没有前台,如果要做成一个完整的网站的话需要你自己去开发前台了,后台用来做网站我敢保证绝对没问题,别看我只用了3天时间做的,不过我本身对源码的安全性还是比较注重的,不可能有注入漏洞之的,可能后台界面不怎么样,不过也可以了,操作起来应该应该还是蛮顺手的。Yovae后台管理程序可以提供小型企业发布产品和新闻,后台管理员权限有分级,氛围超级管理员和普通管理员,普通管理员没有添加管理员和查看网站日志的权限,管理还有优化的空间,不过我没有写上,只提供了基本的别添加和管理,嗯 因为我懒….呵呵。 很多代码都化了,引用的都存放在lib文件目录下,可以很方便地进行重用,每个class都刻意保护了id属性,我对每个的magic method如_set()和_get方法都进行重写,对于private变量的封装有一定的破坏,不过方便了访问变量。不知道这算不算扭曲了面向对象思想,但是我认为不管黑猫白猫能捉老鼠就是好猫。为了提高某一方面总得在另外的某方便有点损失。 欢迎大家下载Yovae后台管理程序,它是开源的而且免费,使用或修改无须作者本人的许可,只要保留我的版权信息即可。 不懂的可以参考:http://www.yovae.com/blog/?p=222
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值