生活随笔
收集整理的這篇文章主要介紹了
PHP:6种GET和POST请求发送方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在i94web博客中,我試過了暢言和多說兩種社會化評論框,后來還是拋棄了暢言,不安全。
無論是暢言還是多說,我都需要從遠程抓取文章的評論數(shù),然后存入本地數(shù)據(jù)庫。對于多說,請求的格式如下:
? function?getCommCount($postid)?{?????$jsondata?=?file_get_contents("http://api.duoshuo.com/threads/counts.json?short_name=i94web&threads=$postid");?//?設置true返回數(shù)組,不設置或者是false則返回對象?$resjson=?json_decode($jsondata,true);?return?$resjson['response'][$postid]['comments'];?}? 對于遠程請求,有很多種方法。今天,LZ就搜羅了六種,供大家參考。
1、用file_get_contents 以get方式獲取內容:
<?php? $url='http://www.ido321.com/';? $html?=?file_get_contents($url);? echo?$html;??>
2、用fopen打開url,用get方式獲取
$fp?=?fopen($url,?'r');?stream_get_meta_data($fp);? while(!feof($fp))?{? $result?.=?fgets($fp,?1024);?}? echo?"url?body:?$result";?fclose($fp); 3、用file_get_contents 以post方式獲取內容:
$data?=?array?('foo'?=>?'bar');?$data?=?http_build_query($data);?$opts?=?array?(? 'http'?=>?array?(? 'method'?=>?'POST',? 'header'=>?"Content-type:?application/x-www-form-urlencodedrn"?.?'Content-Length:?'?.?strlen($data)?.?'rn',?'content'?=>?$data?)?);?$context?=?stream_context_create($opts);?$html?=?file_get_contents('http://localhost/e/admin/test.html',?false,?$context);?echo?$html;?4、用fsockopen函數(shù)打開url,以get方式獲取完整的數(shù)據(jù),包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 選項開啟
function?get_url?($url,$cookie=false)?{? $url?=?parse_url($url);? $query?=?$url[path].'?'.$url[query];? echo?'Query:'.$query;? $fp?=?fsockopen(?$url[host],?$url[port]?$url[port]:80?,?$errno,?$errstr,?30);? if?(!$fp)?{? return?false;?}?else?{? $request?=?'GET?$query?HTTP/1.1rn';? $request?.=?'Host:?$url[host]rn';? $request?.=?'Connection:?Closern';? if($cookie)?$request.='Cookie:??$cookien';? $request.='rn';?fwrite($fp,$request);? while(!@feof($fp))?{? $result?.=?@fgets($fp,?1024);?}?fclose($fp);? return?$result;?}?}? ? function?GetUrlHTML($url,$cookie=false)?{? $rowdata?=?get_url($url,$cookie);? if($rowdata)?{? $body=?stristr($rowdata,'rnrn');? $body=substr($body,4,strlen($body));? return?$body;?}?? return?false;?}
5、用fsockopen函數(shù)打開url,以POST方式獲取完整的數(shù)據(jù),包括header和body function?HTTP_Post($URL,$data,$cookie,?$referrer='')?{? ? $URL_Info=parse_url($URL);?? ? if($referrer=='')?? $referrer='111';?? ? foreach($data?as?$key=>$value)? $values[]='$key='.urlencode($value);? $data_string=implode('&',$values);?? ? if(!isset($URL_Info['port']))? $URL_Info['port']=80;?? ? $request.="POST?".$URL_Info['path']."?HTTP/1.1n";?$request.="Host:?".$URL_Info['host']."n";?$request.="Referer:?$referern";?$request.="Content-type:?application/x-www-form-urlencodedn";?$request.='Content-length:?'.strlen($data_string)."n";?$request.='Connection:?closen';?$request.='Cookie:?$cookien';?$request.='n';?$request.=$data_string.'n';?$fp?=?fsockopen($URL_Info['host'],$URL_Info['port']);?fputs($fp,?$request);?while(!feof($fp))?{?$result?.=?fgets($fp,?1024);?}?fclose($fp);?return?$result;?}?6、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經(jīng)打開了curl擴展 $ch?=?curl_init();? $timeout?=?5;?curl_setopt?($ch,?CURLOPT_URL,?‘http:?curl_setopt?($ch,?CURLOPT_RETURNTRANSFER,?1);?curl_setopt?($ch,?CURLOPT_CONNECTTIMEOUT,?$timeout);? $file_contents?=?curl_exec($ch);?curl_close($ch);? echo?$file_contents;?
來源:51CTO
總結
以上是生活随笔為你收集整理的PHP:6种GET和POST请求发送方法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。