Home >php教程 >php手册 >php页面访问时,统一进行权限验证的设计

php页面访问时,统一进行权限验证的设计

WBOY
WBOYOriginal
2016-06-21 09:06:52877browse

访问|设计|页面

晚上有人问我关于网站页面显示的时候,权限判断的问题。于是就又有了这篇文章。

其实这个有很多中的方式来实现。

1,可以在每个页面中都单独进行权限判断,这个是最大众的方法。
2,可以为每一个最终页面文件都作一个配置文件,用来进行权限判断,当用户访问这个页面的时候,通过一个函数来判断,是否存在这个文件。如果存在,就根据文件的内容进行权限判断,如果不存在,就不用进行权限判断。
3,是统一作判断,做一个单独的函数,通过一定的配置进行权限判断。

下面的一个例子是第三种方法,这种方法适合于任何的情况,且比较通用。

步骤一、整理访问路径信息,把需要进行权限验证的路径进行整理,整理成一个列表
步骤二、整理需要进行权限验证的分类,为每一种权限验证作一个单独的函数,
步骤三、把 “访问路径”和 “权限验证函数”的对应关系,按 1:1 写到一个配置文件或是数组里面,例如下面的 filter.php 里面的 $filter 数组
步骤四、做一个验证函数,解析当前的访问路径,进行权限判断。

简述,filter.php是用来包含所以验证信息的文件,authorization()是一个核心的调度函数,请注意看函数里面的说明,application.php 是一个普通的页面文件。例子中的函数都没有具体实现,自己补充吧。

文件一、filter.php

$filter = array('/admin' => 'adminLogin',
                '/admin/userAdmin' => 'powerAdminLogin',
                '/myshop' => 'userLogin'
    );

function adminLogin(){
 // return '是管理员吗'? 'SUCCESS': 'FALSE';
}

function powerAdminLogin(){
 // return '是超级管理员吗'? 'SUCCESS': 'FALSE';
}

function userLogin(){
 // return '是会员吗'? 'SUCCESS': 'FALSE';
}

function authorization(){
 global $filter;
 // 取出 并 解析 当前访问的url路径,判断 $filter 里面是否含有当前要过滤的路径

 // 例如当前访问路径是 http://www.hahawen.com/admin/userAdmin/gogo.php
 // 取出/admin/userAdmin/gogo判断  $filter 里面是否含有 这个路径。
 // 如果没有就在取出 /admin/userAdmin 判断  $filter 里面是否含有 这个路径
 // 如果有就返回  $filter 中,这个路径(/admin/userAdmin)对应的值 $value,
 // 实际上这个 $value 就是一个函数的名称,
 // 这个函数就是用来判断当前用户,是否对当前的访问路径,有访问权限的函数
 // 通过 $value() 方式调用这个函数,返回 “成功” or “失败”
 // 如果失败,就重新定向到错误页面,也可以在 $value() 函数里面进行相应的处理
 // 如果成功,返回true

    // 例如当前访问路径是 http://www.hahawen.com/news/happy/list.php
 // 取出 /news/happy/list 判断  $filter 里面是否含有 这个路径。
 // 如果没有就在取出 /news/happy 判断  $filter 里面是否含有 这个路径
 // 如果没有就在取出 /news 判断  $filter 里面是否含有 这个路径
 // 如果还没有,就表示这个页面不许要进行权限验证。
 // 返回 true
}

?>

文件二、application.php


 require_once "filter.php";
 authorization();
    //其他的操作。
?>




Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn