博主


« 2018年-09月 »
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6

分类


热门标签


最新评论


最近留言


最近访客


概要

  • 文章数量: 41
  • 分类数量: 9
  • 标签数量: 73
  • 评论数量: 159
  • 浏览次数: 3580902

友情链接

使用$_REQUEST 要留意的地方

作者: 我不是鱼 (2010-02-26 10:02)分类: PHP   标签: $_REQUEST 键值相同

做大相册接口的时候,要传递图片的host过来,程序这边用 $_REQUEST['host'] 获得。在浏览器测试了一下,发现得到的并非是url参数传过来的host。测试发现时cookie存在键为host的值,才醒起是cookie中的host覆盖了get中的host。

$_REQUEST 包含 GET/POST/Cookie 。在键值相同时默认是 POST覆盖GET,COOKIE覆盖POST或GET。

这个默认的顺序也可以改,在 php.ini 中查找variables_order,会看到类似

variables_order = "EGPCS"

这就是php注册变量的顺序,E代表$_ENV,G代表$_GET,P代表$_POST,C代表$_COOKIE,S代表$_SERVER。在register_globals为on时,新的值会覆盖之前的值。例如在register_globals为on时,可以直接用$key代替$_GET['key']。同样这个顺序的gpc也作用在$_REQUEST中。

如果你禁止了 register_globals,但又想用到一些全局变量,可以用 extract() 函数。在没有权限修改 variables_order 的顺序时,想用到全局变量又想设置一下覆盖的顺序时可以用

import_request_variables('gpc') ;

实现。同样,键值相同时会按函数参数的顺序覆盖而不受php.ini的variables_order顺序制约。

评论 (0) | 浏览 (9880)

前一篇: foreach 使用&引用赋值要注意的问题
后一篇: phpmyadmin 打开数据表较多,数据量较大的数据库时出现超时的解决办法


添加评论

登陆 注册  昵称: