php请求数据的方式,php请求数据的方式有哪些

php请求第三方数据方法

方法有很多,其中有file_get_contents把数据读到一个字符串中,还有一个是curl方式,两种方式有所不同,查一下就知道区别了

创新互联专注于郏县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供郏县营销型网站建设,郏县网站制作、郏县网页设计、郏县网站官网定制、小程序开发服务,打造郏县网络公司原创品牌,更为您提供郏县网站排名全网营销落地服务。

php中有哪些常用的远程请求发送方法

1、用file_get_contents 以get方式获取内容:

?php

$url = '' ;

$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( '' , false , $context); echo $html;

4、用fsockopen函数打开url,以get方式获取完整的数据,包括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函数打开url,以POST方式获取完整的数据,包括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是否已经打开了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 ;

以上就是php中,比较常用的6中远程请求方法,希望对php新人的学习、工作有一定的帮助。当然远程请求的方法肯定不止题主上面为大家介绍的这6中,如果你还有更好的方法,欢迎补充分享。软件开发的学习,就是一个分享式的学习,让我们一起在分享学习中,共进步。

php 怎么POST获取数据?

方法1、最常见的方法是:$_POST['fieldname'];

说明:只能接收Content-Type:

application/x-www-form-urlencoded提交的数据

解释:也就是表单POST过来的数据

方法2、file_get_contents("php://input");

说明:

允许读取

POST

原始数据

$HTTP_RAW_POST_DATA

比起来,它给内存带来的压力较小,并且不需要任何特殊的

php.ini

设置。

php://input

不能用于

enctype="multipart/form-data"。

解释:

对于未指定

Content-Type

的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。

事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括

二进制文件

流也可以。

所以用方法二是最保险的方法

方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

说明:

总是产生

$HTTP_RAW_POST_DATA

变量包含有原始的

POST

数据。

此变量仅在碰到未识别

MIME

类型的数据时产生。

$HTTP_RAW_POST_DATA

对于

enctype="multipart/form-data"

表单数据不可用

如果post过来的数据不是PHP能够识别的,可以用

$GLOBALS['HTTP_RAW_POST_DATA']来接收,

比如

text/xml

或者

soap

等等

解释:

$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。

$_POST或

$_REQUEST

存放的是

PHP以key=value的形式格式化以后的数据。

但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时

必须显式示指明Content-Type:

application/x-www-form-urlencoded,POST的数据才会存放到

$GLOBALS['HTTP_RAW_POST_DATA']中


分享文章:php请求数据的方式,php请求数据的方式有哪些
文章分享:http://azwzsj.com/article/hchdhp.html