通常情況下用戶使用瀏覽器網(wǎng)頁(yè)表單向服務(wù)器post提交數(shù)據(jù),我們使用PHP的$_POST接收用戶POST到服務(wù)器的數(shù)據(jù),并進(jìn)行適當(dāng)?shù)奶幚?。但有些情況下,如用戶使用客戶端軟件向服務(wù)端php程序發(fā)送post數(shù)據(jù),而不能用$_POST來識(shí)別,那又該如何處理呢?
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁(yè)制作,對(duì)木制涼亭等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站營(yíng)銷優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
我們介紹php接受post數(shù)據(jù)的三種方式:
1.$_POST方式畢改握接收數(shù)據(jù)
$_POST方式是通過 HTTP POST 方法傳遞的變量組成的數(shù)組,是自動(dòng)全局變量。如使用$_POST[‘name’]就可以接收到網(wǎng)頁(yè)表單以及網(wǎng)頁(yè)異步方式post過來的數(shù)據(jù),
即$_POST只能接收文檔類型為Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),也就是表單POST過來的數(shù)據(jù)。
2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收數(shù)據(jù)
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST過來的數(shù)據(jù)取決于centent-Type的設(shè)置,只有在PHP在無法識(shí)別的Content-Type的情況下,才會(huì)將POST過來的數(shù)據(jù)原樣地填入變量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded時(shí),該變量是空的。
另外,它同樣無法讀取Content-Type為multipart/form-data的POST數(shù)據(jù),也需要設(shè)置php.ini中的always_populate_raw_post_data值為On,PHP才會(huì)總把POST數(shù)據(jù)填入變量$http_raw_post_data。
3.php://input方式接收數(shù)據(jù)
如果訪問原始 POST 數(shù)據(jù)的更好方法是 php://input。php://input 允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來,它給內(nèi)存帶來的壓力較小,并且不需要任何特殊的php.ini設(shè)置,php://input不能用于 enctype=”multipart/form-data”。對(duì)于未指定 Content-Type 的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”)來獲取原始數(shù)據(jù)。事實(shí)上,用PHP接收POST的殲和任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括二進(jìn)制文件流也可以。php://input讀手慶取不到$_GET數(shù)據(jù)。是因?yàn)?
三中接受方式:
$_GET ? ?//get過來的數(shù)據(jù)
$_POST ?//post過來的數(shù)據(jù)
file_get_contents("php://input") ? //接口過來閉鄭的xml等字符串?dāng)?shù)據(jù)用這個(gè)接
這三個(gè)方法足以接受任何數(shù)據(jù)了,具體你還要百轎亮頌鍵姿度一下用法
表單傳值廳唯有兩種方式分別為:
get (通過URL進(jìn)行傳值,這種方式并不安全);
post(封裝到一個(gè)post包中進(jìn)行傳遞,比get安全,一般用這個(gè))
下面我們用$_POST進(jìn)行傳值:
?php
include("櫻轎include/common.inc");
$title="表單處理頁(yè)";
include("include/header.inc");
if($_POST['name'] == null || $_POST['name'] == "你的名字")
echo "請(qǐng)輸入您的姓名";
else
{
echo "$name,您好,歡迎扮頌培您的光臨!";
}
?
PHP 可以通過POST、GET方法獲取到表單提交的數(shù)據(jù)
獲取到的POST、GET是數(shù)組形式的值,需要通過鍵值來詳跡李敬細(xì)獲取相應(yīng)的值
比如: index.php 頁(yè)面
下面是POST方法
form name="form1" method="post" action="index.php"
input type="text" name="contents" value=""
input type="submit" value="提交"
/form
?php
//獲取表單提交的數(shù)據(jù)
$contents = $_POST['姿慎contents'];
echo $contents;
?
也可以是下面是GET方法
form name="form1" method="get" action="index.php"
input type="text" name="contents" value=""
input type="submit" value="提交"
/form
?php
//獲取表單提交的數(shù)據(jù)
$contents = $_GET['contents'];
echo $contents;
?
POST相對(duì)于GET方法,更好一些,可以提擾做交大量數(shù)據(jù),以及更安全些。