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介绍篇
Oct 26 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php foreach循环中使用引用的问题
Nov 06 PHP
PHP header()函数常用方法总结
Apr 11 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
php制作文本式留言板
Mar 18 PHP
PHP文件读取功能的应用实例
May 08 PHP
php发送邮件的问题详解
Jun 22 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP获取二叉树镜像的方法
Jan 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函数连续调用实例分析
2015/07/30 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python完全新手教程
2007/02/08 Python
python实现问号表达式(?)的方法
2013/11/27 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
就业协议书范本
2014/04/11 职场文书
协议书模板
2014/04/23 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
单位综合评价意见
2015/06/05 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
python基础之文件操作
2021/10/24 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers