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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP封装的分页类与简单用法示例
Feb 25 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
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
php递归json类实例
2014/12/02 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php实现留言板功能
2017/03/05 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
js 调用百度分享功能
2017/02/27 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
Araks官网:纽约内衣品牌
2020/10/15 全球购物
strstr()的简单实现
2013/09/26 面试题
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
店长岗位的工作内容
2013/11/12 职场文书
应征英语教师求职信
2013/11/27 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
新品发布会主持词
2014/04/02 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
教师节领导致辞
2015/07/29 职场文书
医院病假条怎么写
2015/08/17 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python