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 相关文章推荐
第十二节 类的自动加载 [12]
Oct 09 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
PHP错误和异长常处理总结
Mar 06 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 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/10/09 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
js时间控件只显示年月
2017/01/08 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
python装饰器与递归算法详解
2016/02/18 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
新学期家长寄语
2014/01/19 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
优秀毕业生求职信
2014/06/05 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
Oracle表空间与权限的深入讲解
2021/11/17 Oracle
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS