php透過socket post資料到其它web server

WBOY
發布: 2016-07-25 08:43:10
原創
1313 人瀏覽過
  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.1rn");
  17. fputs($fp, "Host: $hostrn");
  18. if ($referer != '')
  19. fputs($fp, "Referer: $refererrn");
  20. fputs($fp, "Content-type: application/x-www-form-urlencodedrn");
  21. fputs($fp, "Content-length: ". strlen($data) ."rn");
  22. fputs($fp, "Connection: closernrn");
  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("rnrn", $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. }
复制代码

套接字、PHP、貼文


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板