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 09 PHP
php目录管理函数小结
Sep 10 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP大神的十大优良习惯
Sep 14 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php中时间函数date及常用的时间计算
May 12 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP 字符串分割和比较
2009/10/06 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
python switch 实现多分支选择功能
2020/12/21 Python
优秀工会工作者事迹材料
2014/06/02 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
求职导师推荐信范文
2015/03/27 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android