当前位置:Gxlcms > PHP教程 > php通过socketpost数据到其它webserver

php通过socketpost数据到其它webserver

时间:2021-07-01 10:21:17 帮助过:4人阅读

  1. function post_request($url, $data, $referer='') {
  2. // Convert the data array into URL Parameters like a=b&foo=bar etc.
  3. $data = http_build_query($data);
  4. // parse the given URL
  5. $url = parse_url($url);
  6. if ($url['scheme'] != 'http') {
  7. die('Error: Only HTTP request are supported !');
  8. }
  9. // extract host and path:
  10. $host = $url['host'];
  11. $path = $url['path'];
  12. // open a socket connection on port 80 - timeout: 30 sec
  13. $fp = fsockopen($host, 80, $errno, $errstr, 30);
  14. if ($fp){
  15. // send the request headers:
  16. fputs($fp, "POST $path HTTP/1.1\r\n");
  17. fputs($fp, "Host: $host\r\n");
  18. if ($referer != '')
  19. fputs($fp, "Referer: $referer\r\n");
  20. fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  21. fputs($fp, "Content-length: ". strlen($data) ."\r\n");
  22. fputs($fp, "Connection: close\r\n\r\n");
  23. fputs($fp, $data);
  24. $result = '';
  25. while(!feof($fp)) {
  26. // receive the results of the request
  27. $result .= fgets($fp, 128);
  28. }
  29. }
  30. else {
  31. return array(
  32. 'status' => 'err',
  33. 'error' => "$errstr ($errno)"
  34. );
  35. }
  36. // close the socket connection:
  37. fclose($fp);
  38. // split the result header from the content
  39. $result = explode("\r\n\r\n", $result, 2);
  40. $header = isset($result[0]) ? $result[0] : '';
  41. $content = isset($result[1]) ? $result[1] : '';
  42. // return as structured array:
  43. return array(
  44. 'status' => 'ok',
  45. 'header' => $header,
  46. 'content' => $content
  47. );
  48. }
  49. //使用方法
  50. // Submit those variables to the server
  51. $post_data = array(
  52. 'test' => 'foobar',
  53. 'okay' => 'yes',
  54. 'number' => 2
  55. );
  56. // Send a request to example.com
  57. $result = post_request('http://www.example.com/', $post_data);
  58. if ($result['status'] == 'ok'){
  59. // Print headers
  60. echo $result['header'];
  61. echo '
    ';
  62. // print the result of the whole request:
  63. echo $result['content'];
  64. }
  65. else {
  66. echo 'A error occured: ' . $result['error'];
  67. }

socket, php, post

人气教程排行