php中使用$_REQUEST需要注意的一个问题

问题
说起$_REQUEST,大家都知道的是它是$_GET和$_POST的集合。但是如果你有心的话,查一下文档,会看到:

$_REQUEST

An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE.

这里说$_REQUEST默认是$_GET, $_POST, $_COOKIE的集合,结果我使用我本地的php查看了一下发现只有$_GET, $_POST, 没有$_COOKIE!! 难道文档是错的?

答案
其实changelog中有给出解释:

版本5.3以上,php.ini中有request_order属性来设置$_REQUEST。查了下php.ini, request_order设置成为了GP(Get and Post)。

request_order的官网描述:

request_order string

This directive describes the order in which PHP registers GET, POST and Cookie variables into the _REQUEST array. Registration is done from left to right, newer values override older values.

If this directive is not set, variables_order is used for $_REQUEST contents.

Note that the default distribution php.ini files does not contain the 'C' for cookies, due to security concerns.

原来是G,P,C分别代表Get,Post,Cookie,5.3以上的版本request_order默认是设置成GP的,并不包含C,即$_REQUEST默认只包含$_GET和$_POST !! (所以官网文档有一定的误导)。

也同时说一下G,P,C的先后顺序就是设置的array的覆盖顺序。

提醒下如果你是使用fpm-php实验的话,改了php.ini后你需要重启php-fpm

(0)

相关推荐

  • php中time()与$_SERVER[REQUEST_TIME]用法区别

    本文实例详细讲述了php中time()与$_SERVER[REQUEST_TIME]用法的区别.分享给大家供大家参考.具体分析如下: 简单的说time()与$_SERVER["REQUEST_TIME"]都是获得时间的,但time返回当前的 Unix 时间戳而$_SERVER["REQUEST_TIME"]得到请求开始时的时间戳,稍有区别. 1. time() 获取当前的系统时间戳 int time(void) : 返回当前的 Unix 时间戳 (返回自从 Unix

  • php中$_REQUEST、$_POST、$_GET的区别和联系小结

    1. $_REQUEST php中$_REQUEST可以获取以POST方法和GET方法提交的数据,但是速度比较慢 2. $_GET 用来获取由浏览器通过GET方法提交的数据.GET方法他是通过把参数数据加在提交表单的action属性所指的URL中,值和表单内每个字段一一对应,然后在URL中可以看到,但是有如下缺点: 1. 安全性不好,在URL中可以看得到 2. 传送数据量较小,不能大于2KB. 3. $_POST 用来获取由浏览器通过POST方法提交的数据.POST方法他是通过HTTP POST

  • php中神奇的fastcgi_finish_request

    听起来可能有些茫然,我们通过几个例子来说明一下: 复制代码 代码如下: <?php echo '例子:'; fastcgi_finish_request(); echo 'To be, or not to be, that is the question.'; file_put_contents('log.txt', '生存还是毁灭,这是个问题.'); ?> 通过浏览器(不是命令行!)运行此脚本,结果发现并没有输出相应的字符串,但却生成了相应的文件.由此说明在调用fastcgi_finish_

  • php实现httpRequest的方法

    本文实例讲述了php实现httpRequest的方法.分享给大家供大家参考.具体如下: 想从学校图书馆的网站上抓取数据处理之后在返回给浏览器,试了不少方法.首先试了http_request(),但是这个学院pecl_http支持,后来又试了网上流传甚广的class HttpRequest,可能是我不会使用,也失败了.后来看到了函数httpRequest($url, $post='', $method='GET', $limit=0, $returnHeader=FALSE, $cookie=''

  • php.ini中的request_order推荐设置

    今天刚刚安装dede,安装完成由一条错误信息(PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP') in php.ini dede中给出了解决的方法,把request_order这个配置选项从默认的 request_order = "GP" 更改为 request_order = "CGP" 问题解决: 关于 request_

  • php错误提示failed to open stream: HTTP request failed!的完美解决方法

    google或者baidu一下,好多这样的问题,解决的方法都是修改php.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On 这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可.)重启服务器. 但是有些还是会有这个警告信息,想用完美的解决

  • PHP 中TP5 Request 请求对象的实例详解

    PHP 中TP5 Request 请求对象 public/index.php <?php // [ 应用入口文件 ] // 定义应用目录 define('APP_PATH', __DIR__ . '/../app/'); // 定义配置文件目录和应用目录同级 define('CONF_PATH', __DIR__.'/../config/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php'; app\index\controller

  • php中使用$_REQUEST需要注意的一个问题

    问题说起$_REQUEST,大家都知道的是它是$_GET和$_POST的集合.但是如果你有心的话,查一下文档,会看到: $_REQUEST An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE. 这里说$_REQUEST默认是$_GET, $_POST, $_COOKIE的集合,结果我使用我本地的php查看了一下发现只有$_GET, $_POST, 没有$_COOKIE!!

  • AngualrJS中每次$http请求时的一个遮罩层Directive

    AngularJS是一款非常强大的前端MVC框架.在AngualrJS中使用$http每次向远程API发送请求,等待响应,这中间有些许的等待过程.如何优雅地处理这个等待过程呢? 如果我们在等待过程中弹出一个遮罩层,会是一个比较优雅的做法. 这就涉及到了对$http的请求响应进行拦截了.请求的时候,弹出一个遮罩层,收到响应的时候把遮罩层隐藏. 其实,$httpProvider已经为我们提供了一个$httpProvider.interceptors属性,我们只需要把自定义的拦截器放到该集合中就可以了

  • 完美解决UI-Grid表格元素中多个空格显示为一个空格的问题

    UI-Grid中表格数据中如果存在多个连续的空格,会显示为一个空格,解决方法很简单,只需要加上这样一个样式: .ui-grid-cell-contents { white-space: pre !important; } white-space 属性设置如何处理元素内的空白. pre:  空白会被浏览器保留.其行为方式类似 HTML 中的 <pre> 标签. 以上这篇完美解决UI-Grid表格元素中多个空格显示为一个空格的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多

  • jQuery实现table中两列CheckBox只能选中一个的示例

    //html <table id="unit"> <tr> <th>选项一</th> <th>选项二</th> <th>姓名</th> </tr> <tr> <td><input type="checkbox" /></td> <td><input type="checkbox&quo

  • JS中Eval解析JSON字符串的一个小问题

    之前写过一篇 关于 JSON 的介绍文章,里面谈到了 JSON 的解析.我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法,我们可以用eval() 函数. JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单:

  • 将DataTable中的一行复制到另一个DataTable的方法

    将DataTable中的一行复制到另一个DataTable 方法1: DataRow dr = ds2.Tables[0].NewRow();         dr.ItemArray = ds1.Tables[0].Rows[i].ItemArray;         ds2.Tables[0].Rows.Add( dr ); 方法2: ds2.Tables[0].ImportRow(ds1.Tables[0].Rows[i]);

  • C++实现将一个字符串中的字符替换成另一个字符串的方法

    本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考.具体方法如下: 题目要求: 原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy" 被替换的字符串当然不仅仅是空格,上面只是个例子 这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面.这里给出如下实现代码: #include <iostream> #inc

  • mysql 从一个表中查数据并插入另一个表实现方法

    mysql 从一个表中查数据并插入另一个表实现方法 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段. 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中.此方法对于SQLServer数据库,也就是T-SQL来说,同样适用 . 类别一. 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法: INSERT

  • 在ASP.NET 2.0中操作数据之二:创建一个业务逻辑层

    导言 本教程的第一节所描述的数据访问层(Data Access Layer,以下简称为DAL)已经清晰地将表示逻辑与数据访问逻辑区分开了.不过,即使DAL将数据访问的细节从表示层中分离出来了,可它却不能处理任何的业务规则.比如说,我们可能不希望产品表中那些被标记为"停用"的产品的"分类编号"或"供应商编号"被更新:我们还可能需要应用一些资历规则,比如说我们都不希望被比自己的资历还要浅的人管理.另外一个比较常见的情况就是授权,比如说只有那些具有特殊

  • C#字符串中去除多余的空格保留一个的实例

    在C#的字符串,其中有许多空格,现要求是把多余的空格去除保留一个.原理是使用Split()方法进行分割,分割有一个选项是RemoveEmptyEntries,然后再把分割后的字符串Join起来. string string1 = "AAaaA Oopps 32 211 44.8 69 15.9 C# 36.7 0.6 "; string[] arr = string1.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveE

随机推荐