PHP实战

PHP:

【PHP】


了解项目结构

  1. Controller是控制层

  2. View是视图层

    • 从pulic’下面复制模板-
  • 在view层创建admin文件夹,粘贴进去

  • 在controller层创建Admin文件夹(注意大写),创建和模板相同名字的控制器。

如图所示


登录:

  • Login.html

记得改路径

令牌使用

  • 三步走:找到login.html 找到标签,添加{:token}

  • 只需要在规则里面添加 token就可以了,名称都是一样的

'__token__' => ['token']

数据的验证

  • 在Application文件下创建和view同级的文件夹 validate

密码的验证

  • 注意1,2,3三个地方:

规则写在: $rule里面,验证语句写在 $message里面,都是protected

DB的操作

  • where
Db::name('admin')->where('username',$params['username'])->findOrEmpty();
  • 判断用户名是否一致(用在登录验证)
$userInfo = Db::name('admin')->where('username',$params['username'])->findOrEmpty();

Session的操作

session 写在登录判断成功语句之后

登录页面显示admin101
  • 如图所示这么写:

  • 因为静态文件写在 User/login.html里面

  • 所以要去 controller层里面的User.php里面

  • 写一个和 login.html同名的函数

  • 加入下面这句话

$this->assign("customer","admin001");

  • get
$username = Session::get("adminInfo")['username'];
  • set
$userAdmin = Session::get("adminInfo");
$this->assign("userAdmin", $userAdmin['username']);

搜索功能

  • 在show_list.html里面找到 搜索函数

  • 修改url的跳转地址(自定义)

  • 在admin.php里面创建 dataSearch_user函数(静态页面自定义的函数)

  • 书写搜索DB操作

  • 还是在上面这个function里面

$map[] = ['username','=',$searchParams['username']];
$pageData = Db::name("admin")->where($map)->paginate($pageSize)->toArray();
  • 返回的格式固定
return [
            'code'=>0,
            'message'=>"请求成功",
            'count'=>$pageData['total'],//总的数据
            'data'=>$pageData['data'],
            'page'=>Request::get("page"),
            'limit'=>Request::get("limit"),
            /*json_encode()  数组转为JSON字符串
                      json_decode()  JSON字符串转为数组
                     * */
            'query'=>$searchParams
        ];

访问页面

数据渲染

  • 四步走
  1. 定义渲染的页面在view视图层里面

  2. 找到function叫做table的地方

  3. 改变url的地址,地址随便写,最后要到admin里面去创建相同名称的function

'{:url("get_admin_list")}'
  1. 在 cols里面布局你要的数据

完成上面的四个,只是完成了静态页面的配置,还要去controller里面创建function

  • controller层
  1. 在admin里面写,设置function函数

  2. 蓝色框框里面的不要写

  3. 标号1-4照抄(实在不会去 F盘里面找planA,找 admin101里面的controller里面的admin,按ctrl+F打开搜索,)

结果如下图所示:

数据提交

管理员信息更新修改

  • 在管理员修改页面找到监听提交的位置

  • 添加ajax的代码,ajax

$.ajax({
 //url: '/admin028/User/doLogin',
      url: '{:url("show_basic_confirm",["a"=>1,"b"=>2],".html",true)}',
      type: 'post',
      data: index,
      success: function (res) {
      console.log(res)
      if(res.code == 200) {
           layer.msg('success', function () {
           window.location.reload();
           window.location.href = '{:url("admin/show_basic_info")}';
      })
      } else {
                    // code fail renew delete update clear
       layer.alert(res.message)
       }
       },
       error:function () {

       }
 })
return false;
  • 到 controller层去找show_basic_confirm

  • 先判断用户名是否存在

假设要求用户名不能被修改,直接显示

如下图所示创建判断语句:

  • 创建校验,如何引入校验去这篇文档查看 > 数据的校验

  • paramGe是一个新的函数在这个函数的上面写入

如下图所示:

代码直接复制:

$adminInfo = Db::name('admin')->where('username',
Session::get("adminInfo")['username']);
        $program = [
            [
                'admin_id' => $adminInfo['id'],
                'create_ip' => Request::ip(),
                'create_at' => date('Y-m-d H:i:s'),
                'module' => Request::module(),
                'controller' => Request::controller(),
                'params' => json_encode(Request::param()),
                'user_agent' => Request::header("user_agent"),
            ]
        ];
        Db::name('admin_log')->insertAll($program);

生成日志记录

在admin里面 deal_menager函数里面直接复制

$search = Db::name('admin')->where("username",$params['username'])->findOrEmpty();
        $program = [
            'admin_id' => $search['id'],
            'create_ip' => Request::ip(),
            'create_at' => date('Y-m-d H:i:s'),
            'module' => Request::module(),
            'controller' => Request::controller(),
            'params' => json_encode(Request::param()),
            'user_agent' => Request::header("user_agent"),
        ];
        Db::name('admin_log')->insert($program);

如下图所示:

添加管理员

public function deal_manager(){

        $params = [
            'username' => Request::post('username'),
            'password' => Request::post('password'),
        ];


        $result = Db::name("admin")->where("username",$params['username'])->findOrEmpty();
        $ManagerCheck=new ManagerCheck();

        if(!$ManagerCheck->check($params)) {
            $res = [
                "code"=>201,
                "message"=>"账号密码格式不正确",
            ];
            return json($res);

        }
        if($result) {
            $res = [
                "code"=>202,
                "message"=>"账号已经存在",
            ];
            return json($res);

        }
        $data = [
            'username' => $params['username'],
            'password' => password_hash($params['password'],PASSWORD_DEFAULT),
            'create_at' => date('Y-m-d H:i:s'),
            'update_at' => date('Y-m-d H:i:s'),
            'last_ip' => Request::ip()
        ];
        Db::name("admin")->insert($data);
        $res = [
            "code"=>200,
            "message"=>"账号创建成功",
            "data"=>$data
        ];
        $search = Db::name('admin')->where("username",$params['username'])->findOrEmpty();
        $program = [
            'admin_id' => $search['id'],
            'create_ip' => Request::ip(),
            'create_at' => date('Y-m-d H:i:s'),
            'module' => Request::module(),
            'controller' => Request::controller(),
            'params' => json_encode(Request::param()),
            'user_agent' => Request::header("user_agent"),
        ];
        Db::name('admin_log')->insert($program);

        return json($res);


    }

    public function add_manager(){

        return $this->fetch();
    }

创建侧边菜单栏

操作方式:

  • 在public目录下找到api文件夹

  • api文件夹下面找到init.json文件

  • init.json文件里面找到 “menuinfo”

  • 在menuinfo模仿其他的格式写一个

如下图所示:


数据库创建字段

  • 数据库实在不会写没有关系,上面那些代码要写进去,模板复制清楚
  1. username , password , id 三个就可以
  • 数据库在这里,创建上面的三个字段就可以

  • 三个字段名 username , password , id