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 02 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
PHP查询网站的PR值
Oct 30 PHP
ThinkPHP标签制作教程
Jul 10 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
PHP原生函数一定好吗?
Dec 08 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php session的应用详细介绍
2017/03/22 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python操作gmail实例
2015/01/14 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
使用python计算三角形的斜边例子
2020/04/15 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
如何利用find命令查找文件
2016/11/18 面试题
高校教师思想汇报
2014/01/11 职场文书
满月酒答谢词
2014/01/14 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
作风转变心得体会
2014/09/02 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
感谢信的格式
2015/01/21 职场文书
暑假安全保证书
2015/02/28 职场文书
端午节寄语2015
2015/03/23 职场文书
公司仓库管理制度
2015/08/04 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python