返回首页
  主页 > 编程 > php >

php 用session设计权限不科学,会导致系统耦合度高

2019-01-25 16:20 阅读:104 来源:智宇SEO自媒体

  在写小区物业管理系统。用户登录设置3个权限等级。

  超级管理员,普通管理,业主。

  超级管理员,权限标识2

  普通管理员,权限标识1

  业主,权限标识为0

  下面代码智宇写的,但PHP老司机告诉我,代码不科学。会导致系统耦合高。还有一个问题,用户登录用session记录id即可,不需要记录用户名。可通过ID查找用户名。


控制器代码:
class loginController extends grace{

    public function index(){
        if(!empty($_POST))
        {
            $loginModel = model('login');
            $name=$_POST['uname'];
            $pwd=$_POST['pwd'];
            $typeid=$_POST['typeid'];// 选择管理员还是业主
            if($loginModel->checkLogin($name,$pwd,$typeid))
            {
                
                setSession('name',$name);
                if( $typeid == 1){//权限控制,超级管理员登录 设置为2   普通管理员登录设置1  业主登录为1

                    if(($loginModel->selectAdminId($name))==1){
                        setSession('root',2);
                    }else{
                        setSession('root',1);
                    }

                }
                else
                {
                    setSession('root',0);
                }

                $this->root=getSession('root');
                s('main','index',$this->root);
            }
            else
            {
                e("用户名或密码错误!登录失败");
            }
        }
       $this->display('login.php');

    }

}

模型代码:
<?php
namespace phpGracemodels; 

class login{
    public function checkLogin($name,$pwd,$typeid){//登录验证
        $this->db = db('admin');
        if($typeid==1)
        {
            $sql ="select * from yuwy_admin where uname = ? AND pwd =?";
        }
        else
        {
            $sql="select * from yuwy_user where name = ? AND pwd =?";
        }
        $this->db->query($sql, array($name,$pwd));
        $arr = $this->db->queryFetchAll();
        if(!empty($arr))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public function selectAdminId($uname){//查找管理员id
        $this->db = db('admin');
        $this->id=$this->db->where('uname = ?', array($uname))->fetch();
        if($this->id)
        {
            $arr=$this->id;
            if($arr['root']==1)//超级管理员
            {return 1;}
            else
            {
                return 2;//普通管理员
            }
        }
        else
        {
            return false;
        }
    }

视图代码:
<div class="panel">
  <div class="panel-heading">
    小区物业管理系统
  </div>
  <div class="panel-body">
    <form action="" method="post" name="login" id="login">
	
    <table>
    	<tr><td>用户名<td><td><input type="text" name="uname"  class="form-control" type="text" placeholder=""></td></tr>
    	<tr><td>密码<td><td><input type="text" name="pwd"  class="form-control"  type="password" placeholder=""> </td></tr>
		<tr><td>登录选择<td><td><select class="form-control" name="typeid">
<option value="1">管理员</option>
<option value="2">业主</option>
</select></td></tr>
    	<tr><td><input value="登录" id="btn" class="btn btn-primary" type="submit"/></td></tr>
    </table>
	</div>
   
  </div>
</div>



返回首页
利博娱乐计划 利博娱乐官网 利博娱乐APP 利博娱乐走势图 利博娱乐下载 利博娱乐官方 利博娱乐网站 利博娱乐怎么玩 利博娱乐官方 利博娱乐靠谱吗 利博娱乐代理 利博娱乐骗局 利博娱乐投注 利博娱乐倍率 利博娱乐开奖 利博娱乐漏洞