本文实例讲述了php基于fsockopen与curl实现自动提交表单的方法。分享给大家供大家参考,具体如下:
fsockopen和curl都可以做php自动提交表单
1. fsockopen方法:
php代码:
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
|
<?php /*----------------------------------------------------------- *功能:使用PHP socke 向指定页面提交数据 *作者:果冻 说明:post($url, $data) * * $url = 'http://www.xxx.com:8080/login.php'; * $data[user] = 'hong'; * $data[pass] = 'xowldo'; * echo post($url, $data); *-----------------------------------------------------------*/ function post( $url , $data ) { $url = parse_url ( $url ); if (! $url ) return "couldn't parse url" ; if (!isset( $url [ 'port' ])) { $url [ 'port' ] = "" ; } if (!isset( $url [ 'query' ])) { $url [ 'query' ] = "" ; } $encoded = "" ; while (list( $k , $v ) = each( $data )) { $encoded .= ( $encoded ? "&" : "" ); $encoded .= rawurlencode( $k ). "=" .rawurlencode( $v ); } $fp = fsockopen ( $url [ 'host' ], $url [ 'port' ] ? $url [ 'port' ] : 80); if (! $fp ) return "Failed to open socket to $url[host]" ; fputs ( $fp , sprintf( "POST %s%s%s HTTP/1.0n" , $url [ 'path' ], $url [ 'query' ] ? "?" : "" , $url [ 'query' ])); fputs ( $fp , "Host: $url[host]n" ); fputs ( $fp , "Content-type: application/x-www-form-urlencodedn" ); fputs ( $fp , "Content-length: " . strlen ( $encoded ) . "n" ); fputs ( $fp , "Connection: closenn" ); fputs ( $fp , "$encodedn" ); $line = fgets ( $fp ,1024); if (! eregi ( "^HTTP/1.. 200" , $line )) return ; $results = "" ; $inheader = 1; while (! feof ( $fp )) { $line = fgets ( $fp ,1024); if ( $inheader && ( $line == "n" || $line == "rn" )) { $inheader = 0; } elseif (! $inheader ) { $results .= $line ; } } fclose( $fp ); return $results ; } /* $url = 'http://video.xxx.com:80/game_vm.php'; $data['gid'] = '1'; echo post($url, $data); */ ?> |
2. Curl方法:
php代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php $url = 'http://localhost/curl/result.php' ; $params = "param=123¶m2=333" ; //What will be posted $user_agent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)" ; $ch = curl_init(); curl_setopt( $ch , CURLOPT_POST,1); curl_setopt( $ch , CURLOPT_POSTFIELDS, $params ); curl_setopt( $ch , CURLOPT_URL, $url ); curl_setopt( $ch , CURLOPT_USERAGENT, $user_agent ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER,1); $result =curl_exec ( $ch ); //execut curl_close ( $ch ); echo "Results: <br>" . $result ; ?> |
result.php (just for test)
1
2
3
|
<?php print_r( $_POST ); ?> |
希望本文所述对大家PHP程序设计有所帮助。