单一入口机制
指对某个网站的访问都必须通过某个特定的脚本文件,比如我们经常看到某个网站的所有页面都是index.php?xxxx
这样的形式。
这种方式带来的好处就是便于访问控制、能更好预防黑客攻击
网站的其他页面通过拼接连接地址访问
MVC 目录规范
本课程目录规范注意:这里的
index.php
即所说的单一入口
MVC的简易调用
在上面一篇文章中,我们用简单的例子实现了MVC的开发。
这里,我们要简化步骤,使MVC的使用更加方便。将之前test.php
文件中做的处理,用函数封装起来
--> 以实现Controller
或Model
或View
的调用和其中方法的执行
<?php
funtion C($name, $method){
require_once('/libs/Controller/'.$name.'Controller.class.php');
// 将String类型转换成可执行的php语句
// $testController改成obj
eval('$obj = new '.$name.'Controller(); $obj->'.$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中做如下处理:
<?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。
网友评论