在我们web应用的开发中,经常会听见或看见单一入口模式,在我开始学习tp框架的时候也不理解为什么要运用一个单一入口模式,只是会使用,最近自己在搞一个小东西的时候才明白为什么在web开发中要运用单一入口模式。

  那么,什么叫单一入口模式呢?单一入口模式官方版就是用一个文件处理所有的请求。其实,说通俗一点就是,当我们访问一个网站,都是在地址栏中通过http的请求访问,在http的请求中,我们需要标明我们要访问什么页面,什么内容,单一入口模式就是将你所有的请求都通过这一个文件转发出去,就好比a想找b,找c,找d,多入口就是找谁直接去找,单入口就是如果a想找b,需要先通过e,告诉e找c什么事,然后e再去找c。这样我们就可以很好的看出来单入口模式的优点就在于安全,单入口可以将过滤掉一些非法的字符和请求。

  php实现单一入口模式:

  一个简单的单一入口文件非常容易实现,既然没有了多入口,那么必然就会变成单入口多参数的形式。所以,在访问index.php时传入规定格式的参数,比如:http://localhost/index.php?con=article&met=list  上述表示我们想要访问article控制器的list方法,即请求一个文章的列表页。

 <?php
$controller=$_GET["con"]==""?"index":$_GET["con"]; //获取get请求的参数信息,如果没有参数,则默认给定index
$method=$_GET["met"]==""?"index":$_GET["met"];
require_once($controller."Controller.class.php"); //包含对应请求的控制器文件
$obj=new $controller."Controller()"; //实例化控制器对应的类
$obj->$method."()"; //调用对应请求的方法
?>

上述代码就实现了一个最简单的单一入口模式的请求,在http请求时,传入对应的参数,然后通过index.php的文件对传入的参数进行获取,获取后找到相应的文件,然后进行调用访问。这样就实现了在单一入口模式下对整个网站的访问。

  单一入口模式最主要的优点就是安全,可以在入口文件中对请求字符中的非法字符进行过滤。当然事情都有两面性,看网站大神所写这种模式对搜索引擎不友好,搜索引擎不认为它是一个正常的URL,可以改用pathinfo的方式。不过目前还没有学习到那种程度,所以以后会更加深入的学习。

对web应用中单一入口模式的理解及php实现的更多相关文章

  1. MVC架构中的Repository模式 个人理解

    关于MVC架构中的Repository模式   个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接 ...

  2. 高访问量WEB开发中的架构模式,学习从点滴开始

     当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构 ...

  3. web.config中的InProc模式 与 StateServer模式[转]

    开发asp.net应用时,修改web.config中的SessionState节点. <sessionState mode="StateServer" stateConnec ...

  4. web自动化测试中的PO模式(一)

    1.PO模式的思想 原理: 将页面的元素定位和元素行为封装成一个page类 类的属性:元素的定位 类的行为:元素的操作 页面对象和测试用例分离 测试用例: 调用所需要页面对象中的行为,组成测试用例 测 ...

  5. 关于bottle WEB框架中签名cookie的一点理解

    首先要理解一个概念 MAC (message authenticate code) 消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具. 构造方 ...

  6. 关于java中生产者消费者模式的理解

    在说生产者消费者模式之前,我觉得有必要理解一下 Obj.wait(),与Obj.notify()方法.wait()方法是指在持有对象锁的线程调用此方法时,会释放对象锁,同时休眠本线程.notify() ...

  7. php单一入口和多入口模式详细讲解

    php单一入口模式可谓是现在一种比较流行的大型web应用开发模式,比如当前比较流行的一些php开发框架,zend,thinkphp,qeephp,还有cakephp 等他们都是采用的单一入口模式的.本 ...

  8. Web前端开发中的MCRV模式(转)

    作者: izujian  来源: baiduux 摘要:针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为 基础,结 ...

  9. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

随机推荐

  1. oracle操作语句

    Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); create index index_userid on tbl_detail(userid);如何找 ...

  2. 在eclipse上提交任务到集群执行

    win7下eclipse远程开发hadoop程序,分为两种: (1)运行[Run As] Java Application, 打包程序为jar,上传集群执行(这里不做解释) (2)运行[Run As] ...

  3. 接触CrackMe 第一个

    今天刚接触这个 做了一个简单的. 用Onlydbg加载之后,对GetDlgItemTextA函数下断点,因为程序是在控件上获取数据的. Register输入Name和Serial点击Ok之后,断点响应 ...

  4. C语言_double_精度的谜团

    double-long long 和0的比较,double和double之间比较

  5. 浏览器加载模式:window.onload和$(document).ready()的区别(详解)

    jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: wind ...

  6. 星际争霸反作弊AG对战平台_支持108,113

    星际争霸反作弊AG对战平台_支持108,113,116 强大的星际反作弊功能,对战神器,让玩家公平对战 目前腾讯对战,浩方对战,VS对战平台都有星际外挂,AG平台什么都不干专门反外挂,希望热爱星际的玩 ...

  7. Ubuntu14.04安装Mongodb

    官网获取到最新的tgz包: 请查看自己的cpu这里是32位的. $sudo wget htps://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.7. ...

  8. jQuery代码不能执行,必须在代码之前就要包含jQuery包

    <script>    $(function () {        $("#btnRegister").click(function () {            ...

  9. yii post delete request more safe

    常规的delete方法如下: /**  * Deletes a particular model. * If deletion is successful, the browser will be r ...

  10. c# xml操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...