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 syntax error, unexpected $end 错误的一种原因及解决
Oct 25 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
PHP判断是否为空的几个函数对比
Apr 21 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
再论Javascript的类继承
2011/03/05 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
购房委托书范本
2014/09/18 职场文书
房屋认购协议书
2015/01/29 职场文书
教师个人师德总结
2015/02/06 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
基于python制作简易版学生信息管理系统
2021/04/20 Python
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
ORACLE查看当前账号的相关信息
2021/06/18 Oracle