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
MySQL中create table语句的基本语法是
Jan 15 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
PHP实现的装箱算法示例
Jun 23 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
Laravel中获取IP的真实地理位置
Apr 01 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获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
php分页示例分享
2014/04/30 PHP
javascript eval函数深入认识
2009/02/21 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
vue--vuex详解
2019/04/15 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Vue中props的详解
2019/05/16 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
python 将print输出的内容保存到txt文件中
2018/07/17 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
机电专业大学生求职信
2013/10/04 职场文书
化工专业应届生求职信
2013/11/08 职场文书
教师师德考核自我评价
2014/09/13 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS