php教程

超轻量级php框架startmvc

php使用socket post数据到其它web服务器的方法

更新时间:2020-03-04 19:15:04 作者:startmvc
本文实例讲述了php使用socketpost数据到其它web服务器的方法。分享给大家供大家参考。具体

本文实例讲述了php使用socket post数据到其它web服务器的方法。分享给大家供大家参考。具体实现方法如下:


function post_request($url, $data, $referer='') {
 // Convert the data array into URL Parameters like a=b&foo=bar etc.
 $data = http_build_query($data);
 // parse the given URL
 $url = parse_url($url);
 if ($url['scheme'] != 'http') { 
 die('Error: Only HTTP request are supported !');
 }
 // extract host and path:
 $host = $url['host'];
 $path = $url['path'];
 // open a socket connection on port 80 - timeout: 30 sec
 $fp = fsockopen($host, 80, $errno, $errstr, 30);
 if ($fp){
 // send the request headers:
 fputs($fp, "POST $path HTTP/1.1\r\n");
 fputs($fp, "Host: $host\r\n");
 if ($referer != '')
 fputs($fp, "Referer: $referer\r\n");
 fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
 fputs($fp, "Content-length: ". strlen($data) ."\r\n");
 fputs($fp, "Connection: close\r\n\r\n");
 fputs($fp, $data);
 $result = ''; 
 while(!feof($fp)) {
 // receive the results of the request
 $result .= fgets($fp, 128);
 }
 }
 else { 
 return array(
 'status' => 'err', 
 'error' => "$errstr ($errno)"
 );
 }
 // close the socket connection:
 fclose($fp);
 // split the result header from the content
 $result = explode("\r\n\r\n", $result, 2);
 $header = isset($result[0]) ? $result[0] : '';
 $content = isset($result[1]) ? $result[1] : '';
 // return as structured array:
 return array(
 'status' => 'ok',
 'header' => $header,
 'content' => $content
 );
}
//使用方法
// Submit those variables to the server
$post_data = array(
 'test' => 'foobar',
 'okay' => 'yes',
 'number' => 2
);
// Send a request to example.com 
$result = post_request('http://www.example.com/', $post_data);
if ($result['status'] == 'ok'){
 // Print headers 
 echo $result['header']; 
 echo '<hr />';
 // print the result of the whole request:
 echo $result['content'];
}
else {
 echo 'A error occured: ' . $result['error']; 
}

希望本文所述对大家的php程序设计有所帮助。