| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
ded3b
10年前发布

通过socket 提供数据到其它web服务器的PHP代码

php通过socket post数据到其它web server

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'];   }