php中$_REQUEST、 $_GET、 $_POST、 $_COOKIE 的关系和区别

看到REQUEST可以通吃GET 、POST 、COOKIE 后 感觉这个$_REQUEST太强大了
是不是其他的几个超级变量就没有用了,下面对他们整体做个比较:

1.安全性 post>get

2.数据传输大小 post>get(get最大2000字节)

3.保存到收藏夹 get比较方便.

4.权限大小

首先权限大小跟php.ini文件有关

; This directive determines which super global data (G,P & C) should be
; registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive
; are specified in the same manner as the variables_order directive,
; EXCEPT one. Leaving this value empty will cause PHP to use the value set
; in the variables_order directive. It does not mean it will leave the super
; globals array REQUEST empty.
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
request_order = "GP"

  

这里的意思是:

; 是否将EGPCS变量注册成为全局变量.
; 如果你不希望由于用户数据而导致你脚本的全局变量变得凌乱,你需要关闭此选项
; 这个一般随着 track_vars 打开 - 在这种情况下你能够通过$HTTP_*_VARS[]存取所有的GPC变量.

这些超全局数据包括G(GET),P(POST),C(COOKIE),E(ENV),S(SERVER)。这条指令同样指定了这些数据的注册顺序,换句话说GP和PG是不一样的。注册的顺序是从左至右,即右侧的值会覆盖左侧的。比如,当设置为GPC时,COOKIE > POST > GET,依次覆盖。如果这个项被设置为空,php将会使用指令variables_order的值来指定。

在$_POST[‘name‘] = ‘post‘, $_GET [‘name‘] = ‘get‘ ,setcookie(‘name‘, ‘cookie‘, time()+3600);//先把COOKIE种上,名字为name,值为cookie。然后刷新。(COOKIE要刷新才生效)

上面三个不同的全局变量中键名都是相同的

但是print_r($_REQUEST);  后查看结果 ‘cookie‘。

结论:COOKIE的优先级最高。下来POST,最后才是GET

权限大小比较:$_COOKIE > $_POST > $_GET

另外,判断是post还是get请求的页面,最好使用:$_SERVER[‘REQUEST_METHOD‘]

原文地址:https://www.cnblogs.com/average/p/8394866.html

时间: 2024-10-13 15:19:55

php中$_REQUEST、 $_GET、 $_POST、 $_COOKIE 的关系和区别的相关文章

进程与线程的定义、关系及区别

进程与线程的定义.关系及区别     --参考博客文章:http://blog.csdn.net/yanxiaolx/article/details/51763372 一.进程的定义 进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令.数据和堆栈等组成的,是一个能独立运行的活动实体. 进程一般有三个状态:就绪状态.执行状态和等待状态[或称阻塞状态]:进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系:挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进

数组与ArrayList的关系与区别

数组与ArrayList的关系与区别 一.数组与ArrayList的主要区别:效率.类型识别和primitive type.数组([]):最高效:但是其容量固定且无法动态改变:ArrayList:容量可动态增长:但牺牲效率:建议:首先使用数组,无法确定数组大小时才使用ArrayList! 1.效率:数组扩容是对ArrayList效率影响比较大的一个因素.每当执行Add.AddRange.Insert.InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容

过滤器与拦截器之间的关系与区别

Java过滤器与SpringMVC拦截器之间的关系与区别http://blog.csdn.net/chenleixing/article/details/44573495 今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他

HBase入门实例: Table中Family和Qualifier的关系与区别

Table中Family和Qualifier的关系与区别 就像用MySQL一样,我们要做的是表设计,MySQL中的表,行,列的在HBase已经有所区别了,在HBase中主要是Table和Family和Qualifier,这三个概念.Table可以直接理解为表,而Family和Qualifier其实都可以理解为列,一个Family下面可以有多个Qualifier,所以可以简单的理解为,HBase中的列是二级列,也就是说Family是第一级列,Qualifier是第二级列.两个是父子关系. 谈谈Ta

【转载】OLE DB, ADO, ODBC关系与区别

原文:OLE DB, ADO, ODBC关系与区别 OLE DB, ADO, ODBC 一. ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用 SQL来完成其大部分任务.ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC

进程与线程之间的关系和区别 及 CPU调度

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同步.

(转)CPU的核心数、线程数的关系和区别

我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与线程数的关系和区别. 简单地说,CPU的核心数是指物理上,也就是硬件上存在着几个核心.比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组,等等,依次类推. 线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数.比如,可以通过一个CPU核心数模拟出2线程的

Linux 库函数与系统调用的关系与区别

上周总结了<C 标准库的基础 IO>,其实这些功能函数通过「系统调用」也能实现相应功能.这次文章并不是要详细介绍各系统调用接口的使用方法,而是要深入理解「库函数」与「系统」调用之间的关系和区别. 一.系统调用 系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了对系统硬件设备功能的操作.这么说可能会比较抽象,举个例子,我们最熟悉的 hello world 程序会在屏幕上打印出信息.程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统

SpringBoot与SpringCloud的关系与区别?

一.SpringBoot和SpringCloud简介 1.SpringBoot:是一个快速开发框架,通过用MAVEN依赖的继承方式,帮助我们快速整合第三方常用框架,完全采用注解化(使用注解方式启动SpringMVC),简化XML配置,内置HTTP服务器(Tomcat,Jetty),最终以Java应用程序进行执行. 2.SpringCloud: 是一套目前完整的微服务框架,它是是一系列框架的有序集合.它只是将目前各家公司开发的比较成熟.经得起实际考验的服务框架组合起来,通过SpringBoot风格