㈠ 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,
e
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
㈡ php实现httpRequest的方法
这篇文章主要介绍了php实现httpRequest的方法,涉及php操作http的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了php实现httpRequest的方法。分享给大家供大家参考。具体如下:
想从学校图书馆的网站上抓取数据处理之后在返回给浏览器,试了不少方法。首先试了http_request(),但是这个学院pecl_http支持,后来又试了网上流传甚广的class
HttpRequest,可能是我不会使用,也失败了。后来看到了函数httpRequest($url,
$post='',
$method='GET',
$limit=0,
$returnHeader=FALSE,
$cookie='',
$bysocket=FALSE,
$ip='',
$timeout=15,
$block=TRUE),用它成功了,因此贴出来分享一下。函数代码如下:
代码如下:
<?php
/**
*
Respose
A
Http
Request
*
*
@param
string
$url
*
@param
array
$post
*
@param
string
$method
*
@param
bool
$returnHeader
*
@param
string
$cookie
*
@param
bool
$bysocket
*
@param
string
$ip
*
@param
integer
$timeout
*
@param
bool
$block
*
@return
string
Response
*/
function
httpRequest($url,$post='',$method='GET',$limit=0,$returnHeader=FALSE,$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE)
{
$return
=
'';
$matches
=
parse_url($url);
!isset($matches['host'])
&&
$matches['host']
=
'';
!isset($matches['path'])
&&
$matches['path']
=
'';
!isset($matches['query'])
&&
$matches['query']
=
'';
!isset($matches['port'])
&&
$matches['port']
=
'';
$host
=
$matches['host'];
$path
=
$matches['path']
?
$matches['path'].($matches['query']
?
'?'.$matches['query']
:
'')
:
'/';
$port
=
!empty($matches['port'])
?
$matches['port']
:
80;
if(strtolower($method)
==
'post')
{
$post
=
(is_array($post)
and
!empty($post))
?
http_build_query($post)
:
$post;
$out
=
"POST
$path
HTTP/1.0rn";
$out
.=
"Accept:
*/*rn";
//$out
.=
"Referer:
$boarrlrn";
$out
.=
"Accept-Language:
zh-cnrn";
$out
.=
"Content-Type:
application/x-www-form-urlencodedrn";
$out
.=
"User-Agent:
$_SERVER[HTTP_USER_AGENT]rn";
$out
.=
"Host:
$hostrn";
$out
.=
'Content-Length:
'.strlen($post)."rn";
$out
.=
"Connection:
Closern";
$out
.=
"Cache-Control:
no-cachern";
$out
.=
"Cookie:
$cookiernrn";
$out
.=
$post;
}
else
{
$out
=
"GET
$path
HTTP/1.0rn";
$out
.=
"Accept:
*/*rn";
//$out
.=
"Referer:
$boarrlrn";
$out
.=
"Accept-Language:
zh-cnrn";
$out
.=
"User-Agent:
$_SERVER[HTTP_USER_AGENT]rn";
$out
.=
"Host:
$hostrn";
$out
.=
"Connection:
Closern";
$out
.=
"Cookie:
$cookiernrn";
}
$fp
=
fsockopen(($ip
?
$ip
:
$host),
$port,
$errno,
$errstr,
$timeout);
if(!$fp)
return
'';
else
{
$header
=
$content
=
'';
stream_set_blocking($fp,
$block);
stream_set_timeout($fp,
$timeout);
fwrite($fp,
$out);
$status
=
stream_get_meta_data($fp);
if(!$status['timed_out'])
{//未超时
while
(!feof($fp))
{
$header
.=
$h
=
fgets($fp);
if($h
&&
($h
==
"rn"
||
$h
==
"n"))
break;
}
$stop
=
false;
while(!feof($fp)
&&
!$stop)
{
$data
=
fread($fp,
($limit
==
0
||
$limit
>
8192
?
8192
:
$limit));
$content
.=
$data;
if($limit)
{
$limit
-=
strlen($data);
$stop
=
$limit
<=
0;
}
}
}
fclose($fp);
return
$returnHeader
?
array($header,$content)
:
$content;
}
}
?>
调用也很简单的。简单的例子:
代码如下:
echo
httpRequest('http://www..com');
希望本文所述对大家的php程序设计有所帮助。
㈢ php中的request数据接收
PHP中运算符的变量名写错了。不执行却是下载的原因是:需要将文件存储到服务器指定的路径中才能执行,如APACHE服务器的htdocs文件夹中
㈣ php中的$_REQUEST()函数怎么用
php中有$_request与$_post、$_get用于接受表单数据,当时他们有何种区别,什么时候用那种最好。
一、$_request与$_post、$_get的区别和特点
$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过post和get方法提交的所有数据都可以通过$_REQUEST数组获得
二、$_post、$_get的区别和特点
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性非常低,post安全性较高。
举例:mypage?id=1这种就是GET方式传值,可以用$_request和$_get接受传值。
㈤ php request 怎么使用
你说的是用来接收表单数据的?用法比如你表单的name ="txt"那么接收这个表单内容用$_REQUEST["txt"]来接收,$_REQUEST可以接收post和get的数据。当然并不建议这样做,建议区分开来。毕竟REQUEST没有post和get的执行速度快
㈥ php中get和request的区别
PHP中有$_REQUEST与$_POST、$_GET用于接受表单数据。
一、$_REQUEST与$_POST、$_GET的区别和特点
$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过POST和GET方法提交的所有数据都可以通过$_REQUEST数组获得。
二、$_POST、$_GET的区别和特点
1. GET是从服务器上获取数据,POST是向服务器传送数据。
2. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于GET方式提交表单数据,服务器端用$_GET[‘name’]获取变量的值,对于POST方式提交表单数据,服务器端用$_POST[‘name’]获取提交的数据,当然,两者都可以通过$_REQUEST[‘name’]获得表单数据。对于REQUEST方式提交表单数据,服务器端用$_REQUEST[‘name’]获取变量的值,但这种方式很少用。
4. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,一般认为不能超过100KB。
5. GET安全性非常低,POST安全性较高。
6. GET表单值可以通过_GET获取;但通过action的url设置的参数总是获取不到的,<form method="get" action="a.asp?b=b">跟<form method="get"action="a.asp">是一样的,也就是说,在这种情况下,GET方式会忽略action页面后边带的参数列表。POST表单值可以通过_POST获取;但通过action的url参数设置的参数则可以不能通过_POST获取到。action=test.php?id=1这种就是GET方式传值,可以用$_REQUEST和$_GET接受传值,但不能用POST方式获取到值,即使表单是POST方式提交。所在,在提交表单时,如果action中同时有参数,最好只能通过POST表单方式,对于表单内数据,直接通过POST获取,对于action中参数,童工GET获取。
在做数据查询时,建议用GET方式,而在做数据添加、修改或删除时,建议用POST方式。
request是先读取 get再读post 的, 同时存在, 即覆盖掉前面的变量。
经典实例:
<?php
echo "get\n";
print_r($_GET);
echo "post\n";
print_r($_POST);
echo "request\n";
print_r($_REQUEST);
?>
<form method=post action='?a=1&b=2'>
<input type=text name=a value='a'>
<input type=text name=b value='b'>
<input type=submit value=test>
</form>
输出结果:
get:
Array
(
[a] => 1
[b] => 2
)
post:
Array
(
[a] => a
[b] => b
)
request:
Array
(
[a] => a
[b] => b
)
其实,在php配置文件php.ini中有一个设置项:variables_order = "GPCS" ,GPCS分别是GET,POST,Cookie,Server的首字母缩写,variables_order = "GPCS"含义是php文件中变量的解析顺序是GET,POST,Cookie和Server。
㈦ PHP的Request
aspx
中的
request
是获取post
和
get参数的方法
在php中
使用
$_REQUEST[]
超全局变量来获取。。
㈧ 请问,php中的$_REQUEST是什么意思啊
PHP$_REQUEST是用于收集HTML表单提交的数据,PHP$_REQUEST属于PHP的超级全局变量。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。
在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量$_REQUEST来收集表单中的 input 字段数据。
(8)php中的request扩展阅读:
PHP中预定义了几个超级全局变量,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
1、$GLOBAL
$GLOBAL 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。$GLOBAL 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
2、$_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
3、$_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
4、$_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"
5、$_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
㈨ 请教PHP的require和request的区别,在哪里除了一个是致命错误,代码停止一个是警告,还有啥
php里有个$_REQUEST。request是什么鬼?
感觉你说的应该是PHP中require和require_once的区别,除了各种教程里说的,require如果有多个相同路径的require,都会执行require_once如果有多个同路径的require_once,只执行一次。
但是你知道吗,第二次执行require_once 会返回一个true,栗子:
<?php
$test=require_once'test.php';
var_mp($test);//'testint(1)'
$test=require_once'test.php';
var_mp($test);//'bool(true)'
如果是 include()和require()方法的区别
PHP的include()和require()是两种包含外部文件的方法,对于这两种方法有什么区别,很多初学者可能不是很明白。下面总结一下PHP include()和require()的区别:
1:加载失败的处理方式不同:
include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行)
require() :如果文件不存在,会报出一个fatal error.脚本停止执行
include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行
这里特别要注意的是:使用include()文件不存在时,脚本继续执行,这种情况只出现在PHP 4.3.5之前
推荐使用require_once()和include_once(),可以检测文件是否有重复包含。
2.php性能
对include()来说,在 include()执行时文件每次都要进行读取和评估;
而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。
这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。
另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),
因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。
3.二种方式提供不同的使用弹性。
require 的使用方法如 require("./inc.php"); 。通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的一部份。
include 使用方法如 include("./inc/.php"); 。一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。
require即使在条件位FALSE的时候也会被包含,而include只会在执行到改位置时候才会去执行。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。require_once()函数的作用和 require() 是几乎相同的
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。include_once()函数的作用和 include() 是几乎相同的
require_once的作用是会检查之前是否加载过该文件,如果没有加载则加载 如果加载过就不再次加载,比如某文件定义了一个类型 如果两次加载该文件会出现错误
㈩ php $_REQUEST什么意思
PHP $_REQUEST 用于收集HTML表单提交的数据。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据。