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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
PHP4和PHP5共存于一系统
Nov 17 PHP
php 中文和编码判断代码
May 16 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php数组中包含中文的排序方法
Jun 03 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
Laravel使用模型实现like模糊查询的例子
Oct 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
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
prototype 学习笔记整理
2009/07/17 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
学习Node.js模块机制
2016/10/17 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python创建或生成列表的操作方法
2019/06/19 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
鼓励运动员的广播稿
2014/02/08 职场文书
公司晚会主持词
2014/03/22 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
领导干部作风建设总结
2014/10/23 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
MySQL数据库之存储过程 procedure
2022/06/16 MySQL