MVC -单一入口与路由

来源:互联网 发布:淘宝crm 编辑:程序博客网 时间:2024/06/05 16:30

一、单一入口

名词解释

单一入口:控制web应用程序访问只有有限个入口

例:博客项目控制单一入口

--

<?phpsession_start();include './global.php';$control = './Controller/'.$_GET['action'].'.php';if (!file_exists($control)){    die('404 Not Found Error!');}$allows = ['login','login_action'];if (!in_array($_GET['action'],$allows) and empty($_SESSION['Admin'])){    die('NO LOGIN!');    }include "$control";

其中,$allows为限制访问,if条件控制。

当用户未登录情况下,只能访问login.php与login_action.php文件。


但是,目前的情况下,用户仍然可以通过直接访问文件目录访问页面,如index.php

为彻底规避用户访问,有两种方法:

1、在bootstrap.php文件中定义常量

defined('START',true);

在各个非入口文件设置:如在index.php中添加

if(!defined('START')) die('非法访问');

2、在nginx限制目录

用表达式限制


3、进一步优化

首先:try_files 查找文件

如果找不到,交给bootstrap.php处理



效果:

链接地址随便写,都指向bootstrap.php


4、url伪装

 

代码改成


访问变成



二、路由

不希望URL地址跟文件直接关联,实现间接关联

$router=[    '/^\/main$/' => './Controller/index.php',    '/^\/content/' => './Controller/content.php',    '/^\/login/' => './Controller/login.php',];foreach ( $router as $key => $value) {    if (preg_match($key,$_SERVER['DOCUMENT_URI'])){        $controll = $value;        break;    }}
效果:



1、正向路由 router分离(反向路由,通过文件得到链接地址)




0 0
原创粉丝点击