当前位置:首页 > PHP教程 > php应用 > 列表

php自动提交表单的方法(基于fsockopen与curl)

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-02 14:16:22 浏览: 评论:0 

这篇文章主要介绍了php自动提交表单的方法,结合实例形式分析了php基于fsockopen与curl两种实现技巧,需要的朋友可以参考下。

本文实例讲述了php基于fsockopen与curl实现自动提交表单的方法,分享给大家供大家参考,具体如下:

fsockopen和curl都可以做php自动提交表单

1. fsockopen方法:

php代码:

  1. <?php 
  2. /*----------------------------------------------------------- 
  3. *功能:使用PHP socke 向指定页面提交数据 
  4. *作者:果冻  说明:post($url, $data) 
  5. * 
  6. *    $url   = 'http://www.xxx.com:8080/login.php'; 
  7. *    $data[user] = 'hong'; 
  8. *    $data[pass] = 'xowldo'; 
  9. *    echo post($url, $data); 
  10. *-----------------------------------------------------------*/ 
  11. function post($url$data) { 
  12.   $url = parse_url($url); 
  13.    if (!$urlreturn "couldn't parse url"
  14.    if (!isset($url['port'])) { $url['port'] = ""; } 
  15.    if (!isset($url['query'])) { $url['query'] = ""; } 
  16.   $encoded = ""
  17.    while (list($k,$v) = each($data)) { 
  18.     $encoded .= ($encoded ? "&" : ""); 
  19.     $encoded .= rawurlencode($k)."=".rawurlencode($v); 
  20.    } 
  21.   $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); 
  22.    if (!$fpreturn "Failed to open socket to $url[host]"
  23.   fputs($fp, sprintf("POST %s%s%s HTTP/1.0n"$url['path'], $url['query'] ? "?" : ""$url['query'])); 
  24.   fputs($fp"Host: $url[host]n"); 
  25.   fputs($fp"Content-type: application/x-www-form-urlencodedn"); 
  26.   fputs($fp"Content-length: " . strlen($encoded) . "n"); 
  27.   fputs($fp"Connection: closenn"); 
  28.   fputs($fp"$encodedn"); 
  29.   $line = fgets($fp,1024); 
  30.    if (!eregi("^HTTP/1.. 200"$line)) return
  31.   $results = ""$inheader = 1; 
  32.    while(!feof($fp)) { 
  33.     $line = fgets($fp,1024); 
  34.      if ($inheader && ($line == "n" || $line == "rn")) { 
  35.     $inheader = 0; 
  36.    } 
  37.    elseif (!$inheader) { 
  38.     $results .= $line
  39.    } 
  40.    } 
  41.   fclose($fp); 
  42.    return $results
  43. /* 
  44. $url = 'http://video.xxx.com:80/game_vm.php'; 
  45. $data['gid'] = '1'; 
  46. echo post($url, $data); 
  47. */ 
  48. ?> 

2. Curl方法:

php代码:

  1. <?php 
  2.   $url = 'http://localhost/curl/result.php'
  3.   $params = "param=123&param2=333"//What will be posted 
  4.   $user_agent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)"
  5.   $ch = curl_init(); 
  6.   curl_setopt($ch, CURLOPT_POST,1); 
  7.   curl_setopt($ch, CURLOPT_POSTFIELDS,$params); 
  8.   curl_setopt($ch, CURLOPT_URL,$url); 
  9.   curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
  10.   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
  11.   $result=curl_exec ($ch); //execut 
  12.   curl_close ($ch); 
  13.   echo "Results: <br>".$result
  14. ?> 

result.php (just for test)

  1. <?php 
  2. print_r($_POST); 
  3. ?>

Tags: php自动提交 fsockopen

分享到: