MVC -单一入口与路由

一、单一入口

名词解释

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

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

--

<?php
session_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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值