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 从数据库提取二进制图片的处理代码
Sep 09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
获取URL文件名后缀
Oct 24 PHP
PHP引用返回用法示例
May 28 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
PHP执行linux命令6个函数代码实例
Nov 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版
2006/10/09 PHP
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php类中private属性继承问题分析
2012/11/01 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
python的几种开发工具介绍
2007/03/07 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python字符串的常见操作实例小结
2019/04/08 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
建材业务员岗位职责
2013/12/08 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
python垃圾回收机制原理分析
2022/04/13 Python