PHP CURL实现模拟登陆并上传文件操作示例


Posted in PHP onJanuary 02, 2020

本文实例讲述了PHP CURL实现模拟登陆并上传文件操作。分享给大家供大家参考,具体如下:

<?php
header('content-type:text/html;charset=gb2312');
//要注意你需要上传的网站服务器的运行环境,还要看它的请求是否被压缩和转码还有就是
//在框架中或者说php5.3以下的版本可以用@,但是其它的就只能用new CURLfile()函数来转化文件了
//注意你要发送的服务器的header头的结构和特殊参数,实在不行就自己构建一个。废话不多说,直接上代码。
function curl_form($post_data,$sumbit_url,$http_url,$cookie_file){
  $headers = array();
  $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
  $headers[] = 'Cache-Control: max-age=0';
  $headers[] = 'Accept-Encoding: gzip, deflate';
  $headers[] = 'Origin: http://my.***.com';
  $headers[] = 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3';
  $headers[] = 'Upgrade-Insecure-Requests: 1';
  $headers[] = 'Content-Type: application/x-www-form-urlencoded';
  $headers[] = 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0';
  $headers[] = 'Connection: keep-alive';
//  $headers[] = 'Cookie: ASPSESSIONIDCCTCTQQC=KBGLPDKBIKDIDCBGFOKNMKOE';
  //初始化
  $ch = curl_init();
  //设置变量
  curl_setopt($ch, CURLOPT_URL, $sumbit_url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回
  curl_setopt($ch, CURLOPT_HEADER, 0);//参数设置,是否显示头部信息,1为显示,0为不显示
  curl_setopt($ch, CURLOPT_REFERER, $http_url);
  //表单数据,是正规的表单设置值为非0
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888');
//  curl_setopt($ch, CURLOPT_ENCODING, "");
//  curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
  //执行并获取结果
  $output = curl_exec($ch);
  if($output === FALSE)
  {
    echo "<br/>","cUrl Error:".curl_error($ch);
  }else{
    return $output;
  }
  //  释放cURL句柄
  curl_close($ch);
}
$temp = array();
$temp['title'] = iconv( "utf-8", "gb2312//IGNORE" , "牛排店加盟");
$temp['ly'] = iconv( "utf-8", "gb2312//IGNORE" , "特色餐饮加盟");
$temp['classid'] = iconv( "utf-8", "gb2312//IGNORE" , "7159");
$temp['newssort'] = iconv( "utf-8", "gb2312//IGNORE" , "1");
$temp['panduan'] = iconv( "utf-8", "gb2312//IGNORE" , "0");
$temp['submit_button'] = iconv( "utf-8", "gb2312//IGNORE" , "发布");
$temp['addr'] = iconv( "utf-8", "gb2312//IGNORE" , "bjcanyin");
$temp['ContentBg'] = "";
$temp['newss'] = iconv( "utf-8", "gb2312//IGNORE" , htmlspecialchars_decode("<p>阿会计师的贺卡收到框架</p><p><img alt=\"\" 
src=\" http://localhost/super/Uploads/img/2017-08-10/598c145a9527e.jpg\" style=\"height:243px; width:324px\" /></p>", ENT_QUOTES));
$cookie_file = dirname(__FILE__)."/jdzj.tmp";
$sumbit_url = "http://***/news/***.asp";
$http_url="http://***/news/***.asp?act=addok";
$img = curl_form($temp,$http_url,$sumbit_url,$cookie_file);
var_dump($img);

PS:关于PHP curl选项详细说明可参考https://3water.com/article/39331.htm

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
PHP自定义函数收代码
Aug 01 PHP
discuz的php防止sql注入函数
Jan 17 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
php curl post 时出现的问题解决
Jan 30 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 #PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 #PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 #PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 #PHP
PHP单元测试配置与使用方法详解
Dec 27 #PHP
PHP全局使用Laravel辅助函数dd
Dec 26 #PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 #PHP
You might like
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
python如何代码集体右移
2020/07/20 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
开水果连锁店创业计划书
2013/12/29 职场文书
采购经理岗位职责
2014/02/16 职场文书
环保倡议书500字
2014/05/15 职场文书
物理学专业自荐信
2014/06/11 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
成绩报告单家长评语
2014/12/30 职场文书
院系推荐意见
2015/06/05 职场文书
企业年会祝酒词
2015/08/11 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
分析Netty直接内存原理及应用
2021/06/14 Java/Android