admin管理员组

文章数量:1633739

一、单一入口

名词解释

单一入口:控制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分离(反向路由,通过文件得到链接地址)




本文标签: 路由入口MVC