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安装全攻略:APACHE
Oct 09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
php检查页面是否被百度收录
Oct 28 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
Laravel5权限管理方法详解
Jul 26 PHP
PHP图片水印类的封装
Jul 06 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 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
PDO::exec讲解
2019/01/28 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Python设计密码强度校验程序
2020/07/30 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
简历里的自我评价范文
2014/02/24 职场文书
经理助理岗位职责
2014/03/05 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js