php 模拟post数据

kevin.Zhu 发布于:2013-1-16 15:30 分类:Php  有 16 人浏览,获得评论 0 条  

<?php 

function do_post_request($url, $postdata, $files = null) 

$data = ""; 

$boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10); 

//Collect Postdata 

foreach($postdata as $key => $val) 

$data .= "--$boundary\n"; 

$data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n"; 

$data .= "--$boundary\n"; 

//Collect Filedata 

foreach($files as $key => $file) 

$fileContents = file_get_contents($file['tmp_name']); 

$data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n"; 

$data .= "Content-Type: image/jpeg\n"; 

$data .= "Content-Transfer-Encoding: binary\n\n"; 

$data .= $fileContents."\n"; 

$data .= "--$boundary--\n"; 

$params = array('http' => array( 

'method' => 'POST', 

'header' => 'Content-Type: multipart/form-data; boundary='.$boundary, 

'content' => $data 

)); 

$ctx = stream_context_create($params); 

$fp = fopen($url, 'rb', false, $ctx); 

if (!$fp) { 

throw new Exception("Problem with $url, $php_errormsg"); 

$response = @stream_get_contents($fp); 

if ($response === false) { 

throw new Exception("Problem reading data from $url, $php_errormsg"); 

return $response; 

//set data (in this example from post) 

//sample data 

$postdata = array( 

'name' => $_POST['name'], 

'age' => $_POST['age'], 

'sex' => $_POST['sex'] 

); 

//sample image 

$files['image'] = $_FILES['image']; 

do_post_request("http://www.jb51.net", $postdata, $files); 

?>