Ⅰ php如何獲得http post的數據
在PHP段直接用$_POST這個全局數組來獲取,也可以通過$_REQUEST來獲取值
Ⅱ php怎樣用curl發送post請求
使用 PHP 中的 cURL 函數來發送 POST 請求是一種常見的網路數據交互方式。下面分步驟說明如何進行。
首先,初始化 cURL 會話,使用 `curl_init()` 函數。
設置請求方式為 POST,使用 `curl_setopt()` 函數,參數 `CURLOPT_POST`。
要發送 POST 數據,使用 `curl_setopt()` 函數設置 `CURLOPT_POSTFIELDS` 參數,提供要發送的數據。
設置請求頭。例如,添加自定義頭,使用 `curl_setopt()` 函數,參數 `CURLOPT_HTTPHEADER`。
要添加帶有用戶名和密碼的 Authorization 請求頭,首先需要進行 Base64 編碼。示例如下:
設置代理伺服器,使用 `curl_setopt()` 函數,參數 `CURLOPT_PROXY`。
為了將響應內容保存到變數,而非直接輸出,使用 `curl_setopt()` 函數設置 `CURLOPT_RETURNTRANSFER` 參數為 true。
關閉請求,使用 `curl_exec()` 函數執行 cURL 會話,隨後使用 `curl_close()` 關閉會話。
執行簡單 GET 請求與 POST 請求的步驟類似,只需調整 `CURLOPT_POST` 參數。
獲取響應頭信息,使用 `curl_getinfo()` 函數,參數為 `curlINFO_HEADER_OUT`。
若請求導致重定向,`curl_getinfo()` 函數返回的 `curlINFO_REDIRECT_URL` 參數將提供重定向後的地址。
要獲取 Set-Cookie 信息,執行請求後,可以將 `curl_exec()` 的結果存入變數,然後解析響應頭或使用 `curl_getinfo()` 的 `curlINFO_COOKIELIST` 參數。
總結,通過以上步驟,可以靈活地利用 PHP cURL 函數實現 POST 請求,包括設置請求參數、頭信息、代理、獲取響應內容等操作,適用於多種網路交互場景。
Ⅲ php模擬get和post的幾種方法
方法一:
[php]viewplain
$re=file_get_contents($url);
print_r($re);
方法二:
[php]viewplain
$ch=curl_init("http://www.jb51.net/");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
$output=curl_exec($ch);
$fh=fopen("out.html",'w');
fwrite($fh,$output);
fclose($fh);
方法三:
其中把post一塊包含進來了
[php]viewplain
functiondfopen($url,$limit=0,$post='',$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE,$encodetype='URLENCODE'){
$return='';
$matches=parse_url($url);
$host=$matches['host'];
$path=$matches['path']?$matches['path'].($matches['query']?'?'.$matches['query']:''):'/';
$port=!empty($matches['port'])?$matches['port']:80;
if($post){
$out="POST$pathHTTP/1.0 ";
$out.="Accept:*/* ";
$out.="Accept-Language:zh-cn ";
$boundary=$encodetype=='URLENCODE'?'':';'.substr($post,0,trim(strpos($post," ")));
$out.=$encodetype=='URLENCODE'?"Content-Type:application/x-www-form-urlencoded ":"Content-Type:multipart/form-data$boundary ";
$out.="User-Agent:$_SERVER[HTTP_USER_AGENT] ";
$out.="Host:$host ";
$out.='Content-Length:'.strlen($post)." ";
$out.="Connection:Close ";
$out.="Cache-Control:no-cache ";
$out.="Cookie:$cookie ";
$out.=$post;
}else{
$out="GET$pathHTTP/1.0 ";
$out.="Accept:*/* ";
$out.="Accept-Language:zh-cn ";
$out.="User-Agent:$_SERVER[HTTP_USER_AGENT] ";
$out.="Host:$host ";
$out.="Connection:Close ";
$out.="Cookie:$cookie ";
}
$fp=@fsockopen(($ip?$ip:$host),$port,$errno,$errstr,$timeout);
if(!$fp){
return'';
}else{
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)){
if(($header=@fgets($fp))&&($header==" "||$header==" ")){
break;
}
}
$stop=false;
while(!feof($fp)&&!$stop){
$data=fread($fp,($limit==0||$limit>8192?8192:$limit));
$return.=$data;
if($limit){
$limit-=strlen($data);
$stop=$limit<=0;
}
}
}
@fclose($fp);
return$return;
}
}
Ⅳ 如何用php向伺服器發送post請求
用PHP向伺服器發送HTTP的POST請求,代碼如下:
<?php
/**
*發送post請求
*@paramstring$url請求地址
*@paramarray$post_datapost鍵值對數據
*@returnstring
*/
functionsend_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;
}
使用的時候直接調用上面定義的send_post方法:
$post_data=array(
'username'=>'username',
'password'=>'password'
);
send_post('網址',$post_data);
Ⅳ php中Get方法跟Post方法的區別
php中Get方法跟Post方法的區別
php——get方法 :
這個方法用來獲取私有成員屬性值的此正,有一個參數,參數傳入你要獲取的成員屬性的名稱,返回獲取的屬粗衫性值,這個方法不用手工的去調用,因為也可以把這個方法做成私有的方法,是在直接獲取私有屬性的時候對象自動調用的。
因為私有屬性已經被封裝上了,是不能直接獲取值的,但是如果你在類裡面加上了這個方法,在使用「echo$p1->name」這樣的語句直接獲取值的時候就會自動調用__get($name)方法,將屬性name傳給參數$name,通過這個方法的內部執行,返回傳入的.私有屬性的值。
如果成員屬性不封裝成私有的,對象本身就不會去自動調用這個方法。
php——post方法 :
這個方法用於傳送數據,用法與get方法類似,但有區別。
區別 :
Get方法在超鏈接後邊緊跟要傳遞的參數對於用戶是可見的如:%D6%A3%D6%DD%B4%F3%D1%A7&fr=index&ie=utf-8
而Post方法傳遞的參數是不可見的。
GET是從伺服器上獲取數據;POST是向伺服器傳送數據。
在客戶端,GET通過URL提交數據,數據在URL中可見;POST把數據放在form的數據體內提交。
GET提交的數據最多隻有1024位元組岩扒腔;POST提交的數據量無限制。
由於使用GET時,參數會顯示在地址欄上,而POST不會,所以,如果這些數據是非敏感數據,那麼使用GET;如果包含敏感數據,為了安全,用POST方法。
;