PHP单一入口and网址解析

php相关 / 2011年11月15日 08时38分 / 11398人浏览
单一入口概述 单一入口的应用程序就是说用一个文件处理所有的HTTP请求,例如不管是列表页还是文章页,都是从浏览器访问index.php文件,这个文件就是这个应用程序的单一入口。 打个比方,大家都要上WC,都是男生进一个门,女生进一个门,这两个门就是WC的两个入口。而现在去一个公园里面的WC,外面还有一个门,不管男女都从最外面的门进入,交了钱以后才进入里面的男厕所门或女厕所门,而这个最外面的门就是这个WC的单一入口。 实现方式 很简单,可以在访问index.php时限上一个特定的参数。例如index.php?action=list就是访问列表页,而index.php?action=single则访问文章页。 实现代码: $action=$_GET['action']==''?'index':$_GET['action'];//从url中取出action参数,如果没有提供action参数,就设置一个默认的'index'作为参数 include('files/'.$action.'.php');//根据$action参数调用不同的代码文件,从而满足单一入口实现对应的不同的功能。 单一入口应用程序的优势 单一入口应用程序的所有http请求都是通过index.php接收并转发到功能代码去的,所以在index.php里面就能完成许多实际工作。 由于所有的http请求都由index.php接收,所以可以进行集中的安全性检查,如果不是单一入口,那么开发者就必须记得在每一个文件的开始加上安全性检查代码 (当然,安全性检查可以写到另一个文件中,只需要include就可以了。) 与安全性检查类似。在入口里,我们还可以对url参数和post进行必要的检查和特殊字符过滤、记录日志、访问统计等等各种可以集中处理的任务。 这样就可以看出,由于这些工作都被集中到了index.php来完成,可以减轻我们维护其他功能代码的难度。 单一入口应用程序的缺点and解决方法 任何事情都有两面性,单一入口应用程序也不例外。由于所有http请求都是针对index.php,所以程序的url看起来确实不那么美观,特别是对搜索引擎来说很不友好。 要解决这个问题,可以采用网址解析,如 如网址http://www.lostphp.com/cms/admin/index.php/article/index.html 第一步,网址解析: 解析得到当前模块名是article,当前操作是index 注意:网址模块,操作,参数的分隔符,由配置去控制 $config['URL_MODULE_DEPR']='/';//模块分隔符 $config['URL_ACTION_DEPR']='-';//操作分隔符 $config['URL_PARAM_DEPR']='-';//参数分隔符 如http://www.lostphp.com/cms/admin/index.php/article/index-id-100.html print_r($_GET); 得到 $_GET['_module']='article'; $_GET['_action']='index'; $_GET['id']=100; $_GET[0]='id'; $_GET[1]=100; 第二步,检测初始化init.php程序是否存在,存在则加载。不存在,则跳过。