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 相关文章推荐
php学习笔记 数组遍历实现代码
Jun 09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php检查页面是否被百度收录
Oct 28 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
php获取excel文件数据
Apr 21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
php测试kafka项目示例
Feb 06 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 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 switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
python求解水仙花数的方法
2015/05/11 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
基于Python实现扑克牌面试题
2019/12/11 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
学校卫生检查制度
2014/02/03 职场文书
继承公证书
2014/04/09 职场文书
给市场的环保建议书
2014/05/14 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
司机岗位职责
2015/02/04 职场文书
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle