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


Posted in PHP onMay 09, 2016

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

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

1. fsockopen方法:

php代码:

<?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代码:

<?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)

<?php
print_r($_POST);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
如何使用php输出时间格式
Aug 31 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
Zend Studio使用技巧两则
Apr 01 PHP
php的4种常用运行方式详解
Dec 22 PHP
php上传excel表格并获取数据
Apr 27 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
php依赖注入知识点详解
Sep 23 PHP
php简单实现多语言切换的方法
May 09 #PHP
深入浅析PHP无限极分类的案例教程
May 09 #PHP
实例讲解php数据访问
May 09 #PHP
php查询操作实现投票功能
May 09 #PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 #PHP
php面向对象编程self和static的区别
May 08 #PHP
Laravel与CI框架中截取字符串函数
May 08 #PHP
You might like
PHP数据库开发知多少
2006/10/09 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python统计多维数组的行数和列数实例
2018/06/23 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
django 单表操作实例详解
2019/07/30 Python
python操作toml文件的示例代码
2020/11/27 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
用python计算文件的MD5值
2020/12/23 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
资源工程专业毕业生求职信
2014/02/27 职场文书
开学典礼主持词
2014/03/19 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
平面设计专业求职信
2014/08/09 职场文书
战友聚会致辞
2015/07/28 职场文书