㈠ 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 欄位數據。