首页 > 开发 > PHP > 正文

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

2024-05-04 23:35:50
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php使用socket post数据到其它web服务器的方法,涉及php使用socket传输数据的相关技巧,需要的朋友可以参考下

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

 

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表