本文实例讲述了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程序设计有所帮助。