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下通过POST还是GET来传值
Jun 05 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
PHP 读取文件的正确方法
Apr 29 PHP
php 将excel导入mysql
Nov 09 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
php json相关函数用法示例
Mar 28 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
javascript回调函数详解
2018/02/06 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
pytorch 求网络模型参数实例
2019/12/30 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
初三学生语文考试作弊检讨书
2014/12/14 职场文书
工会工作个人总结
2015/03/03 职场文书
Django实现聊天机器人
2021/05/31 Python
MySQL8.0的WITH查询详情
2021/08/30 MySQL