2018/03/15 常用的超全局变量
说是常用的,可是在实际工程中有几个会常用呢?
你难道会在生产环境下使用$_GET|$_POST去直接获取变量么?肯定不会的。
到时对于面试的话,还是可以一部分的考察你的基础知识的掌握,不过我感觉题目含金量并不大
不说废话了,先看一下答案
--
-
$_GET ----->get传送方式
-
$_POST ----->post传送方式
-
$_REQUEST ----->可以接收到get和post两种方式的值
-
$GLOBALS ----->所有的变量都放在里面
-
$_FILES ----->上传文件使用
-
$_SERVER ----->系统环境变量
-
$_SESSION ----->会话控制的时候会用到
-
$_COOKIE ----->会话控制的时候会用到
--
明天开一个题目,叫做GET和POST的区别。
关于COOKIE和SISSION的控制也会在之后的题目中涉及到。
关于FILES文件的也会有特别的章节去梳理。
那么想在就谈谈_REQUEST 和 GLOBALS 和_SERVER他们的使用
--
预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。
平常在使用中,如果你有非常确切的目标,建议使用GET\POST。
有人会问了,这么方便的东西,我为什么不用呢?
因为越是容易的东西越可能出现一些问题,比较隐晦。
一个是字段定义模糊,你都不知道是怎么来的数据,一个是字段重名了,GET和POST都有,它会用哪个?
很多人在使用$_REQUEST的时候,都把$_COOKIE给忘掉了,认为$_REQUEST是将$_GET和$_POST结合的数组。$_REQUEST是什么,哪个优先,其实是根据php.ini的variables_order参数确定的,默认情况下是"EGPCS"。
看一下PHP.INI
其中几个字母(EGPCS)对应如下: Environment, Get, Post, Cookie, Server。这些字母的出现顺序,表明了数据的加载顺序。从三种默认配置来看,相对顺序均是GP
,也就是说只要有POST参数进来,那么它就会覆盖同名的GET参数。
不但需要配置正确,也需要正确使用,可能在其他方面有一些小作用,比如防注入,但是平常更应该注意,使用具有语义化的标签和提取数据
写代码的时候,不要求方便,严格要求自己,才能写出更健壮的程序。
--
GLOBALS
global 关键字 使用全局变量
先说结论:在面向对象中,很少使用了已经,缺点也很明显,定义过多全局变量,难以维护,管理,等等。
$GLOBALS 获取所有的全局变量
--
$_SERVER
获取当前的服务信息,很多东西,具体参数可以去百度。
很强大!但是越强大的函数就越应该谨慎使用。
能力越大,责任越大,就是这个意思。