>  기사  >  백엔드 개발  >  PHP使用$_REQUEST细节注意

PHP使用$_REQUEST细节注意

WBOY
WBOY원래의
2016-06-20 13:01:071409검색

PHP使用$_REQUEST细节注意

在某个报表的程序里,使用了$_REQUEST来接收要查询某个条件的数据,$_REQUEST['from'],如果没有传递来(默认),就会获取已有数据的from中第一个。做出来后,在本地运行测试通过,传到服务器上,测试通过。

在验收的时候,出bug了,而且这个bug很奇怪,同样的程序,放在同一个服务器上,同一个网站,同一个网址,只是不同的电脑,在我的电脑打开默认情况下是有数据,在有的机上打开默认情况下是没数据。

为了排除是客户端浏览器的差异,我在程序里将数据的数组print_r打印出来,结果还是一样,我这里能打印出一堆数据,而有之前没数据的机上看,输出了一个空数组。

不少朋友应该也碰到过这样的需求:传递某个参数时,如果表单POST来,就用$_POST的值,如果没有,就获取$_GET里的值。很多人就会想到$_REQUEST,因为当$_GET和$_POST同时有同名的参数时,$_REQUEST里的就是$_POST,满足了$_POST优先的需求(这个谁优先其实是在php.ini里配置的,默认POST是比GET优先的)。

但是,方便的东西总会带来隐患。很多人在使用$_REQUEST的时候,都把$_COOKIE给忘掉了,认为$_REQUEST是将$_GET和$_POST结合的数组。$_REQUEST是什么,哪个优先,其实是根据php.ini的variables_order参数确定的,默认情况下是"EGPCS"。

我那个情况,就是有的机在某个子站下的某些程序设了名为from的COOKIE,而且作用域是*.主域名,所以他的机上$_REQUEST是会有内容的,是$_COOKIE里的from,而拿他这个from去查数据,当然是没有了,呵呵。

写代码的时候,不要求方便,严格要求自己,才能写出更健壮的程序。


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.