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 相关文章推荐
BBS(php & mysql)完整版(四)
Oct 09 PHP
PHP 函数语法介绍一
Jun 14 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
使用PHP会话(Session)实现用户登陆功能
Jun 29 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
完美的php分页类
Oct 24 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 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
PHP中动态HTML的输出技术
2006/10/09 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
php中explode函数用法分析
2014/11/15 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
jquery 使用简明教程
2014/03/05 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python使用7z解压apk包的方法
2015/04/18 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
详解Python中的路径问题
2020/09/02 Python
工程业务员工作职责
2013/12/07 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
物业工程部岗位职责
2015/02/11 职场文书
物流业务员岗位职责
2015/04/03 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js