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在Web开发领域的优势
Oct 09 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
cakephp打印sql语句的方法
Feb 13 PHP
php获取twitter最新消息的方法
Apr 14 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
tp5修改(实现即点即改)
Oct 18 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 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将向Java靠拢
2006/10/09 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
python实现串口通信的示例代码
2020/02/10 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
美国第一香水网站:Perfume.com
2017/01/23 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
爱情寄语大全
2014/04/09 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
英语教师自荐信
2014/05/26 职场文书
上甘岭观后感
2015/06/10 职场文书
2016年母亲节广告语
2016/01/28 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
java版 联机五子棋游戏
2022/05/04 Java/Android