日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP:6种GET和POST请求发送方法

發(fā)布時間:2023/12/9 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP:6种GET和POST请求发送方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


在i94web博客中,我試過了暢言和多說兩種社會化評論框,后來還是拋棄了暢言,不安全。

無論是暢言還是多說,我都需要從遠(yuǎn)程抓取文章的評論數(shù),然后存入本地數(shù)據(jù)庫。對于多說,請求的格式如下:

  • //?獲取評論次數(shù),參數(shù)是文章ID?
  • function?getCommCount($postid)?
  • {?
  • ????$jsondata?=?file_get_contents("http://api.duoshuo.com/threads/counts.json?short_name=i94web&threads=$postid");?//?設(shè)置true返回數(shù)組,不設(shè)置或者是false則返回對象?$resjson=?json_decode($jsondata,true);?return?$resjson['response'][$postid]['comments'];?
  • }?
  • 對于遠(yuǎn)程請求,有很多種方法。今天,LZ就搜羅了六種,供大家參考。

    1、用file_get_contents 以get方式獲取內(nèi)容:

  • <?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方式獲取內(nèi)容:

  • $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;?
  • }?
  • }?
  • //獲取url的html部分,去掉header?
  • 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='')?
  • {?
  • //?parsing?the?given?URL?
  • $URL_Info=parse_url($URL);?
  • ?
  • //?Building?referrer?
  • if($referrer=='')?//?if?not?given?use?this?script?as?referrer?
  • $referrer='111';?
  • ?
  • //?making?string?from?$data?
  • foreach($data?as?$key=>$value)?
  • $values[]='$key='.urlencode($value);?
  • $data_string=implode('&',$values);?
  • ?
  • //?Find?out?which?port?is?needed?–?if?not?given?use?standard?(=80)?
  • if(!isset($URL_Info['port']))?
  • $URL_Info['port']=80;?
  • ?
  • //?building?POST-request:?
  • $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擴(kuò)展
  • $ch?=?curl_init();?
  • $timeout?=?5;?
  • curl_setopt?($ch,?CURLOPT_URL,?‘http://www.ido321.com/');?
  • curl_setopt?($ch,?CURLOPT_RETURNTRANSFER,?1);?
  • curl_setopt?($ch,?CURLOPT_CONNECTTIMEOUT,?$timeout);?
  • $file_contents?=?curl_exec($ch);?
  • curl_close($ch);?
  • echo?$file_contents;?


  • 來源:51CTO

    總結(jié)

    以上是生活随笔為你收集整理的PHP:6种GET和POST请求发送方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。