本文实例讲述了php使用socket post数据到其它web服务器的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
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' ]; } |
希望本文所述对大家的php程序设计有所帮助。