3. MVC 实例开发(二)

单一入口机制

指对某个网站的访问都必须通过某个特定的脚本文件,比如我们经常看到某个网站的所有页面都是index.php?xxxx这样的形式。
这种方式带来的好处就是便于访问控制、能更好预防黑客攻击
网站的其他页面通过拼接连接地址访问

MVC 目录规范

3. MVC 实例开发(二)_第1张图片
本课程目录规范

注意:这里的 index.php即所说的单一入口

MVC的简易调用

在上面一篇文章中,我们用简单的例子实现了MVC的开发。

这里,我们要简化步骤,使MVC的使用更加方便。将之前test.php文件中做的处理,用函数封装起来
--> 以实现ControllerModelView的调用和其中方法的执行

'.$method.'();')  
    }

    function M($name){
        require_once('libs/Model/'.$name.'Model.class.php');
        // $model=new $name.'Model';
        // $obj=new §model();
        eval('$obj=new '.$name.'Model()');
        return $obj;
    }

    function V($name){
        require_once('libs/View/'.$name.'View.class.php');
        // $view=new $name.'View';
        // $obj=new $view();
        eval('$obj=new '.$name.'View();');
        return $obj;
    }

    // 对一些非法字符进行转义
    function daddslasches($str){
        return(!get_magic_quotes_gpc())?addslashes($str):$str;
    }

?>```

## 入口文件的改造与功能总结
1.统一入口文件为首的URL格式
2.在入口文件里使用安全的方式,来接收传递来的Controller名和method名

在入口文件index.php中做如下处理:

// 引入function文件
require_once('function.php');

$controllerAllow=array('test','index');
$methodAllow=array('test', 'index', 'show');

// url形式: index.php?controller=控制器名&method=方法名
// 在php中接收url的方式为get

// 安全措施 1: 判断该controller是不是在指定的array中(in_array方法)
// 安全措施 2: 使用daddslasches方法
$controller=in_array($_GET['controller'], $controllerAllow)?daddslasches($_GET['controller']):'index';  //接收controller
$method=in_array($_GET['method'], $methodAllow)?daddslasches($_GET['method']):'index';  //接收method

C($controller,$method);

?>```

接下来可以在浏览器中输入http://mvc.test/index.php?controller=test&method=show即可看到结果,该url中清楚的指明了该web,是将index.php作为入口,选择的控制器为test,方法为show。

你可能感兴趣的:(3. MVC 实例开发(二))