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获取mysql数据库中的所有表名的代码
Apr 23 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
解析php中的escape函数
Jun 29 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
php模拟实现斗地主发牌
Apr 22 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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中SQL注入攻击与XSS攻击
2012/06/10 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
更改Python命令行交互提示符的方法
2015/01/14 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
python实现名片管理系统
2018/11/29 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
施工安全协议书
2013/12/11 职场文书
童装店创业计划书
2014/01/09 职场文书
韩国商务邀请函
2014/01/14 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
借款协议书
2014/04/12 职场文书
门市房租房协议书
2014/12/04 职场文书
公积金具结保证书
2015/05/11 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
导游词之唐山景点
2019/12/18 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
详解Redis集群搭建的三种方式
2021/05/31 Redis