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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php生成短网址示例
May 05 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
PHP与SQL语句常用大全
Dec 10 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
php 多继承的几种常见实现方法示例
Nov 18 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
Python使用PIL模块生成随机验证码
2017/11/21 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
运动会100米解说词
2014/01/23 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
简易离婚协议书范本
2014/10/24 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
党校个人总结
2015/03/04 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
python代码实现扫码关注公众号登录的实战
2021/11/01 Python