©
This document uses PHP Chinese website manual Release
(PECL pecl_http >= 0.10.0)
http_post_fields — Perform POST request with data to be encoded
$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 );
?>
[#1] dionmagnus at yandex dot ru [2010-02-19 04:11:24]
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";
?>
[#2] ya at kirilloid dot ru [2008-03-02 07:59:58]
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
[#3] wormholio at gmail dot com [2008-01-28 19:32:05]
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";
?>
[#4] thomasxholder at compuserve dot de [2007-01-07 03:21:16]
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);
?>