织梦中预定义的超全局数组处理,织梦教程
导读:织梦教程织梦教程当我们写好表单后,提交到对应php文件进行处理,在处理前首先要接收数据,然后对数据处理,以申请友情链接为例子。 友情链接申请界面如下图所示: 当我们提交flindede下瓻模板下载织梦模板下载。
当我们写好表单后,提交到对应php文件进行处理,在处理前首先要接收数据,然后对数据处理,以申请友情链接为例子。 友情链接申请界面如下图所示: 当我们提交flink.php后,正常情况是flink.php会用超全局数组$_POST来接收数据,但是打开flink.php文件,我们完全找不到$_POST,难道织梦不用$_POST,织梦也是用php开发的,所以,收集数据必定会用到$_POST,但是如果你仔细分析织梦源码的话,你会发现每个对表单提交过来的数据进行处理的文件,都找不到$_POST或$_GET等超全局数据。 以前刚学习php时,看织梦系统源码,非常费事,就拿这样刚开始时让我纠结了好久,等看多了织梦系统源码,才知道,原来织梦把这些超全局变数组,都做了处理,这样以后我们无需每次处理表单,都要多写$_POST或$_GET等多余的代码了。 我们看一下织梦里面的这个flink.php文件,找到下面几行: $msg = htmlspecialchars($msg); $email = htmlspecialchars($email); $webname = htmlspecialchars($webname); $url = htmlspecialchars($url); $logo = htmlspecialchars($logo); $typeid = intval($typeid); 织梦直接用类似$msg来收集表单来的数据,正常应当是$msg = $_POST['msg'],现在变成了$msg = $msg(htmlspecialchars()这个函数的功能是把一些预定义的字符转换为 HTML 实体,这与超全局变量没有关织梦模板免费下裁系),是不省了不少事,也许大家会问,也省不了多少,这只是一个文件,而织梦时面的处理表单的文件,不止数十个,加起来就量就非常大了,这样不仅可以减少代码,而且,还省不少事。 这个功能是如何实现的?织梦是在入口文件common.inc.php里面定义的,找到这个文件,代码如下: foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) { if($_k == 'nvarname') ${$_k} = $_v; else ${$_k} = _RunMagicQuotes($_v); } } 首先遍历声明的数组Array('_GET','_POST','_COOKIE'),再通过第二次循环遍历,就可以实现了上面的提到简略形式,其中$$_request正是类似的$_GET,$POST,$_COOKIE。$$_request是可变变量,在下面的教程里讲到。在这二又重循环中用到了一个函数_RunMagicQuotes(),还有一个函数CheckRequest()。 不仅这个超全局变量了这种简略思想,在上传文件收集上传信息的$FILES也用了这种思想,作为一个技术员,可以好好研究一下织梦一些设计思想,织梦模板安装一定会对我们大有用处。 扩展学习: 要看明白织梦对预定义的超全局数组(预定义的超全局数组也叫预定义的超全局变量)是如何处理优化的,首先得明白这些超全局数组$_GET、$_POST、$_REQUEST、$GLOBAL、$COOKIE、$SESSION等是什么意思,它们是如何运作的?只有把这些基本的概念弄明白了,才能对织梦里面的超全局数组的应用有更好的把握。 要知道预定义全局数组首先要知道什么是变量、什么是局部变量、什么是全局变量。 变量常识: 当我们声明了一个变量,php就会给变量分配一个空间,这个空间包括变量名、变量的地址和存储变量值空间,例如,声明变量$age=10,在栈内存中示意图如下所示。
声明: 本文由我的SEOUC技术文章主页发布于:2023-07-20 ,文章织梦中预定义的超全局数组处理,织梦教程主要讲述梦中,数组,织梦网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_31666.html