<?php
 function post_request($url, $data='', $referer='')
 {
  // Convert the data array into URL Parameters like a=b&foo=bar etc.
  if(!empty($data))
  {
   $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
  if($fp = fsockopen($host, 80, $errno, $errstr, 30))
  {
   // 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)" 
    );
   }
   fclose($fp);

  // split the result header from the content
  $result = explode("\r\n\r\n", $result, 2);

  $header = '';
  if(isset($result[0]))
  {
   $header = $result[0];
  }
  $content = '';
  if(isset($result[1]))
  {
   $content = $result[1];
  }

 // return as structured array:
  return array(
   'status' => 'ok',
   'header' => $header,
   'content' => $content 
  );
 }
 // Submit those variables to the server




 // example #1
 $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'){

 // headers
 echo $result['header'];

 echo '<hr />';

 // print the result of the whole request:
 echo $result['content']; 
 }
 else

 {
   echo 'A error occured: ' . $result['error'];
 }
 ?>

0 댓글