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 url 加密解密函数代码
Aug 26 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
PHP常用函数之格式化时间操作示例
Oct 21 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
jquery垂直公告滚动实现代码
2013/12/08 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
银行类自荐信
2014/02/04 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
Javascript的promise,async和await的区别详解
2022/03/24 Javascript