PHP獲取POST數(shù)據(jù)的幾種方法:
創(chuàng)新互聯(lián)專注于上栗企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城網(wǎng)站開發(fā)。上栗網(wǎng)站建設公司,為上栗等地區(qū)提供建站服務。全流程按需策劃設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type:
application/x-www-form-urlencoded提交的數(shù)據(jù)。
方法2、file_get_contents("php://input");
說明:
允許讀取
POST
的原始數(shù)據(jù)。
和
$HTTP_RAW_POST_DATA
比起來,它給內(nèi)存帶來的壓力較小,并且不需要任何特殊的
php.ini
設置。
php://input
不能用于
enctype="multipart/form-data"。
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產(chǎn)生
$HTTP_RAW_POST_DATA
變量包含有原始的
POST
數(shù)據(jù)。
此變量僅在碰到未識別
MIME
類型的數(shù)據(jù)時產(chǎn)生。
用PHP向服務器發(fā)送HTTP的POST請求,代碼如下:
?php
/**
* 發(fā)送post請求
* @param string $url 請求地址
* @param array $post_data post鍵值對數(shù)據(jù)
* @return string
*/
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' = array(
'method' = 'POST',
'header' = 'Content-type:application/x-www-form-urlencoded',
'content' = $postdata,
'timeout' = 15 * 60 // 超時時間(單位:s)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
使用的時候直接調(diào)用上面定義的send_post方法:
$post_data = array(
'username' = 'username',
'password' = 'password'
);
send_post('網(wǎng)址', $post_data);
PHP使用socket發(fā)送HTTP請求的方法,具體如下:
socket方式:
$socket?=?socket_create(AF_INET,?SOCK_STREAM,?SOL_TCP);//socket_set_option($socket,?SOL_SOCKET,?SO_SNDTIMEO,?array("sec"=20,?"usec"=0));socket_connect($socket,?'',?80);//里面的換行代表?\r\n?注意拷貝的代碼后面可能有空格$http?=?eof
GET?/?HTTP/1.0
Accept:?*/*
User-Agent:?Lowell-Agent
Host:?
Connection:?Close
eof;
socket_write($socket,?$http,?strlen($http));while($str?=?socket_read($socket,?1024))
{
echo?$str;
}
socket_close($socket);
fsockopen方式:
$fp?=?fsockopen("",?80,?$errno,?$errstr,?30);if?(!$fp)?{
echo?"$errstr?($errno)br?/\n";
}?else?{
$out?=?"GET?/?HTTP/1.1\r\n";
$out?.=?"Host:?\r\n";
$out?.=?"Connection:?Close\r\n\r\n";
fwrite($fp,?$http);
while?(!feof($fp))?{
echo?fgets($fp,?128);
}
fclose($fp);
}
原始socket方式:
$fp?=?stream_socket_client("tcp://",?$errno,?$errstr,?30);if?(!$fp)?{
echo?"$errstr?($errno)br?/\n";
}?else?{
$http?=?eof
GET?/?HTTP/1.0
Accept:?*/*
User-Agent:?Lowell-Agent
Host:?
Connection:?Close
eof;
fwrite($fp,?$http);
while?(!feof($fp))?{
echo?fgets($fp,?1024);
}
fclose($fp);
}
stream??方式(get):
$http?=?eof
Host:?
User-Agent:?Mozilla/5.0?(Windows?NT?6.1;?WOW64;?rv:27.0)?Gecko/20100101?Firefox/27.0Accept:?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:?zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Cookie:?BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1;?BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU;?BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD;?BD_UPN=13314352;?BD_HOME=1;?H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618;?sug=3;?sugstore=0;?ORIGIN=2;?bdime=0Connection:?keep-alive
Cache-Control:?max-age=0
eof;
$hdrs?=?array(
'http'?=array(
'header'?=?$http,
'timeout'=1,?//超時?秒
'method'?=?'GET',?//默認方式
'protocol_version'?=?'1.1',?//默認為?1.0),
);
//參數(shù)格式參考?方式的格式可以參考;??=?stream_context_create($hdrs);
echo?file_get_contents('',?0,?$context);stream??方式?post:
$postdata?=?http_build_query(array('act'='save',?'id'=387171));$http?=?eof
Host:?
User-Agent:?Mozilla/5.0?(Windows?NT?6.1;?WOW64;?rv:27.0)?Gecko/20100101?Firefox/27.0Accept:?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:?zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Content-Type:?application/x-www-form-urlencoded;?charset=UTF-8Cookie:?BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1;?BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU;?BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD;?BD_UPN=13314352;?BD_HOME=1;?H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618;?sug=3;?sugstore=0;?ORIGIN=2;?bdime=0Connection:?keep-alive
Cache-Control:?max-age=0
eof;
#注意post方式需要增加Content-Type
$hdrs?=?array(
'http'?=array(
'header'?=?$http,
'timeout'=1,?//超時?秒
'method'?=?'POST',
'content'?=?$postdata,
'protocol_version'?=?'1.1',?//默認為?1.0),
);
//參數(shù)格式參考?方式的格式可以參考;??=?stream_context_create($hdrs);
echo?file_get_contents('',?0,?$context);
PHP可以用 ignore_user_abort 忽略用戶的中斷,繼續(xù)執(zhí)行腳本。可以用 register_shutdown_function()
在中斷時回調(diào)函數(shù)。回調(diào)可以用 connection_status 查看連接的狀態(tài):
0 - NORMAL
1 - ABORTED
2 - TIMEOUT
3 - ABORTED and TIMEOUT
可以使用PHP的全局靜態(tài)變量$_GET獲取get請求的參數(shù)
$_POST獲取post請求的參數(shù)
其他一些請求傳遞數(shù)據(jù)可以使用file_get_contents等函數(shù)獲取
一般將前臺頁面搜索結果中,不喜歡的內(nèi)容(鏈接),刪除掉,因為整個網(wǎng)站的編程框架式thinkphp,運用js中的ajax對頁面進行響應,調(diào)用后臺php接口,實現(xiàn)前臺和后臺數(shù)據(jù)庫的同時更新.
首先我們需要做的就是在前臺頁面中添加一個文本“刪除”,可以這么添加:
代碼如下:
a href="javascript:void(0);" id= "phpecho $val[id]/php" class="delete" 刪除/a
上面的html代碼的意思:就是給刪除添加一個href,這個href是個js函數(shù),類似于超鏈接的作用,當然對于我這樣的新手在剛開始的時候會有疑惑,我們平時的超鏈接不是這樣的,網(wǎng)頁中很多的javascript:void(0),那程序怎么知道用戶點擊刪除后,會響應其真正對應的js函數(shù)呢?別急,這就是為什么會為刪除添加id以及class這樣的標簽,相信我把js中的代碼公布出來以后你就會明白了,代碼如下:
jQuery(".list a.delete").click(function(){
if(confirm("你確定要刪除嗎?")){
var _this=this;
var id = jQuery(_this).attr("id");
jQuery.ajax({
url : '/Search/index.php/Jason/delete?',
data : {'id':id},
dataType : 'json',
success : function(data){
var del = data.del;
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();
}else{//刪除失敗
alert("刪除失敗");
}
}
});
}
});
大家看函數(shù)的頭部:jQuery(".list a.delete").click(),jQuery后面的標簽是很重要的,這就保證了jquery很準確的響應頁面中用戶點擊的“位置”,添加的事件為click(),在click里添加響應事件的代碼:var id = jQuery(_this).attr("id");獲取a對應的id,因為這個id是我們刪除數(shù)據(jù)庫時用到的鏈接id,當然這種直接明文的方式不好,在這里只是介紹整個響應過程。調(diào)用ajax,實現(xiàn)異步的運行整個過程。我們設置了js接受的是json串,這里的方式應該有很多種吧,我沒有去嘗試,大家要是有興趣可以自行嘗試一下。/Search/index.php/Jason/delete?這句話就是js去請求php的接口,php接口對用的代碼如下:
注意ajax在求php接口時的路徑,也就是delete函數(shù)必須放在JasonAction.class.php中,此例子是必須這樣的:
代碼如下:
public function delete(){
if($this-isGet()){
$userId = session("uid");//用戶登錄
if(!empty($userId)){
$a = M('***');
$id = $this-_get('id');
$result=$a-where("id=$id")-delete();//刪除
if($result 0){
$arr = array("del"='1');
}else{
$arr = array("del"='0');
}
$json_str = json_encode($arr);
echo $json_str;//返回給js
}
}
}
相信大家對上面的代碼不會陌生吧,整個過程都是thinkphp框架內(nèi)部配置完畢的.
var del = data.del;這句是接受php代碼返回來的json串中del這個key的value,進而在前臺進行頁面更新和響應.
復制代碼代碼如下:
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();//這句話就是后臺刪除成功后,直接在前臺對響應的div進行刪除,這樣性能就會很快,無需進行后臺數(shù)據(jù)的重新提取至前臺頁面中,
}else{//刪除失敗
alert("刪除失敗");
}
整個響應的過程就是這樣,至于效果優(yōu)化,是優(yōu)化和細化方面的問題,后來,身邊的同事又告訴我前臺移除響應鏈接的另一個動態(tài)效果:
即將:
代碼如下:
jQuery("#"+id).parents(".list").remove();
替換為:
代碼如下:
jQuery("#"+id).parents(".list").slideUp("slow", function(){
jQuery(this).remove();
});
分享名稱:php如何查看請求數(shù)據(jù) php獲取數(shù)據(jù)
本文URL:http://www.chinadenli.net/article20/doccejo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、建站公司、虛擬主機、品牌網(wǎng)站制作、營銷型網(wǎng)站建設、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)