HTTP 函数
在线手册:中文 英文
PHP手册

http_post_fields

(PECL pecl_http >= 0.10.0)

http_post_fieldsPerform POST request with data to be encoded

说明

string http_post_fields ( string $url , array $data [, array $files [, array $options [, array &$info ]]] )

Performs an HTTP POST request on the supplied url.

请查阅完整的 request 选项组 列表。

参数

url

URL

data

Associative array of POST values

files

Array of files to post

options

request 选项组

info

请求/响应信息

返回值

成功时用字符串返回 HTTP 响应,失败时返回 FALSE

范例

Example #1 A http_post_fields() example

<?php
$fields 
= array(
    
'name' => 'mike',
    
'pass' => 'se_ret'
);
$files = array(
    array(
        
'name' => 'uimg',
        
'type' => 'image/jpeg',
        
'file' => './profile.jpg',
    )
);

$response http_post_fields("http://www.example.com/"$fields$files);
?>


HTTP 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: Perform POST request with data to be encoded

用户评论:

dionmagnus at yandex dot ru (19-Feb-2010 12:11)

Hear is an axmaple how to arrays as POST varibles:
<?php
 
  $response
= http_post_fields('http://example.com/page.php',
                                array(
'val[0]'=>'val1', 'val[1]'=>'val2'));
 
                               
  echo
"\$response: $response\n";                               
                               
?>

ya at kirilloid dot ru (02-Mar-2008 03:59)

comment to wormholio's answer:
if you use regular expression, then use it fully:
"/HTTP\/\d\.\d 302 Found/"
Some servers still can use HTTP 1.0

wormholio at gmail dot com (29-Jan-2008 03:32)

To use POST to submit a form to a site which requires a cookie for authentication you put the cookie in the $options array.  Example:

<?php

$auth
="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$form_url="http://pirates.spy-hill.net/forum_reply.php?thread=663";

$message  = "RoboCodeDwarf now has the gold. \n\n";
$message .= "RoboCodeDwarf sez: [quote] " . `fortune -s` . "[/quote]\n";

$form_fields = array(
                    
'content' => $message,
                    
'add_signature' => 'add_it',
                    
'submit' => 'Post reply'  );
$form_files=array();
$form_options=array( 'cookies' => array( 'auth' => $auth ) );

$response = http_post_fields($form_url, $form_fields, $form_files, $form_options );

$n = preg_match("/HTTP\/1.1 302 Found/", $response, $matches);
if(
$n<1) echo "FAILED\n";
 else    echo
"POSTED\n";

?>

thomasxholder at compuserve dot de (07-Jan-2007 11:21)

It was hard to figure out how to actually post files with this function. The "Array of files to post" is an array of associative arrays, each need the keys "name", "type" and "file". Consider this example code:

<?php
$files
= array(
    array(
       
'name' => 'somename',
       
'type' => 'text/plain',
       
'file' => $filename
   
)
);
$http_response = http_post_fields($url, $data, $files);
?>