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 相关文章推荐
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
PHP常用数组函数介绍
Jul 28 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
php-msf源码详解
Dec 25 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP实现用户登录的案例代码
May 10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
动态创建类实例代码
2009/10/07 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
关于python 跨域处理方式详解
2020/03/28 Python
python 实现表情识别
2020/11/21 Python
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
校园之声广播稿
2014/01/31 职场文书
保护环境倡议书500字
2014/05/19 职场文书
党委班子对照检查材料
2014/08/19 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
作风建设整改方案
2014/10/27 职场文书
会计实训报告范文
2014/11/04 职场文书
音乐教师求职信范文
2015/03/20 职场文书