Skip to content

FAQ control

tolizhan edited this page May 22, 2020 · 2 revisions

为什么控制层类文件要返回true

这是防止非法访问的方法之一

框架有多处安全限制

  1. 大概分三类, 输入输出数据安全, 请求意图访问限制, 安全风险功能
  2. 一类: 系统会对请求参数做防注入处理, 对发送视图层参数做XSS编码处理
  3. 二类: 包括控制层返回值和分页请求等位置只有通过安全校验才能访问
  4. 三类: 对错误日志 扩展管理 多语言管理 生产环境需输入密码才能访问

控制层返回true并不是必须的

  1. 控制层的返回值与 of::dispatch() 第三个参数相同时才可访问
  2. 但第三个参数为 null 时除外, 它会允许访问任何类
  3. 我们可以自定义规则, 比如当是控制层时, 为null, 否则设置 false 来达到目的
  4. 当控制层返回 false 时, 不管如何都是禁止访问的

这个MVC的写法不需要进行安全校验

创建入口 /index.php

<?php
//建立 M层: model, V层: view, C层: ctrl 对应文件夹
require dirname(__FILE__) . '/include/of/of.php';

//调度代码, 这里的"c"参数假设是 "ctrl_test", "a"参数为 "index" if (isset($_GET['c'])) {     //初始化 action 参数     empty($_GET['a']) && $GET['a'] = 'index';     //直接调用 ctrl_test 实例中的 index 方法, 只允许访问 ctrl 层, 所以不需要安全校验 null     $result = of::dispatch($_GET['c'], $GET['a'], strncmp('ctrl', $GET['c'], 5) ? false : null);     //返回数组转成json     if (is_array($result)) echo json_encode($result); }

创建控制层 /ctrl/test.php

<?php
//控制层类名以 ctrl 开头
class ctrl_test extends L {
    /**
      描述 : 通过index.php?c=ctrl_test访问
     /
    function index() {
        //调用model方法
        model_demo_test::index();
    }
}
Clone this wiki locally