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