php使用curl实现简单模拟提交表单功能


Posted in PHP onMay 15, 2017

php 使用curl 进行简单模拟提交表单,供大家参考,具体内容如下

//初始化curl
$ch = curl_init();
$url = 'xxx';
$option = [
 CURLOPT_URL => $url,
 CURLOPT_HEADER => 1,
 CURLOPT_RETURNTRANSFER => 1,
];
curl_setopt_array($ch, $option);
$output = curl_exec($ch);
preg_match_all('/Set-Cookie: (.*);/i', $output, $str); //正则匹配
//如果有token的话就获取token
preg_match('/token = \"(.*)\"/i', $output, $token);
if (empty($str)) {
 return false;
}
$cook = $str[1];
$cookie = implode(';', $cook);

$up_url = 'xxx';
$post_data = [
 'name' => 'test_',
 'tel' => '18819271234',
 'email' => 'qqhahadfdfads@163.com',
 'message' => 'this is my message;',
 '_token' => $token[1],
];
$options = [
 CURLOPT_URL => $up_url,
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_HEADER => 1,
 CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36",
 CURLOPT_COOKIESESSION => 1,
 CURLOPT_POST => 1,
 CURLOPT_POSTFIELDS => $post_data,
 CURLOPT_COOKIE => $cookie
];
curl_setopt_array($ch, $options);
$res = curl_exec($ch);
// $info = curl_getinfo($ch);
if ($res === FALSE) {
 p('curl Error: ' . curl_error($ch));
}
curl_close($ch);
p($res);

取自基于laravel开发的一个网站, laravel中表单中有一个csrf_token 的. 所以就得获取token, 还有带上cookie

这里注意的是, 不能同时初始化两个curl, 否则token或者cookie会发生变化, 如果你需要初始化两个curl的话, 可以使用CURLOPT_COOKIEJAR设置. [详情看手册]

然后运行下: binggo

php使用curl实现简单模拟提交表单功能

使用curl时, 比较重要的就是一个cookie的应用, 翻了下手册, 设置cookie的就有四个...CURLOPT_COOKIESESSION、CURLOPT_COOKIE、CURLOPT_COOKIEFILE、CURLOPT_COOKIEJAR

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
php循环输出数据库内容的代码
May 24 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
PHP读取Excel类文件
May 15 #PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 #PHP
PHP从数组中删除元素的四种方法实例
May 12 #PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 #PHP
php中时间函数date及常用的时间计算
May 12 #PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 #PHP
PHP 实现浏览记录并按日期分组
May 11 #PHP
You might like
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
jQuery 源码分析笔记
2011/05/25 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python中字符串的修改及传参详解
2016/11/30 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
公司证明怎么写
2014/09/22 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
材料采购员岗位职责
2015/04/03 职场文书
行政申诉状范文
2015/05/20 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS