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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php文件缓存类汇总
Nov 21 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
PHP导出Excel实例讲解
Jan 24 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 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实现指定字段的多维数组排序函数分享
2015/03/09 PHP
php图片上传类 附调用方法
2016/05/15 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
js对象的复制继承实例
2015/01/10 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python实现对输入的密文加密
2019/03/20 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
python opencv实现图像配准与比较
2021/02/09 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
学生个人自我鉴定
2014/03/26 职场文书
中学生操行评语大全
2014/04/24 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL