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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
PHP获取url的函数代码
Aug 02 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
php抽奖小程序的实现代码
Jun 18 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
初识php MVC
Sep 10 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 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 function用法如何递归及return和echo区别
2014/03/07 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
js null undefined 空区别说明
2010/06/13 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
es6新特性之 class 基本用法解析
2018/05/05 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
python获取mp3文件信息的方法
2015/06/15 Python
Python 对象中的数据类型
2017/05/13 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
python判断正负数方式
2020/06/03 Python
半年思想汇报
2013/12/30 职场文书
班组长岗位职责范本
2014/01/05 职场文书
前台文员我鉴定
2014/01/12 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
经营目标管理责任书
2014/07/25 职场文书
给老婆的检讨书
2015/01/27 职场文书
财务人员岗位职责
2015/02/03 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
导游词之张家界
2019/10/31 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript