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 8小时时间差的解决方法小结
Dec 22 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
Oct 16 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
php实例化一个类的具体方法
Sep 19 PHP
PHP高并发和大流量解决方案整理
Mar 09 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
js模拟微博发布消息
2017/02/23 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
vc6编写python扩展的方法分享
2014/01/17 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
广告学专业毕业生自荐信
2013/09/24 职场文书
运动会广播稿300字
2014/01/10 职场文书
经销商年会策划方案
2014/05/29 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
python 模块重载的五种方法
2021/04/24 Python
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers