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 相关文章推荐
杏林同学录(九)
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
PHP 面向对象 final类与final方法
May 05 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 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数据库连接
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php mysql数据库操作类
2008/06/04 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python距离测量的方法
2018/03/06 Python
python中自带的三个装饰器的实现
2019/11/08 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
django项目中新增app的2种实现方法
2020/04/01 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
医学院四年学习生活的自我评价
2013/11/06 职场文书
班级口号大全
2014/06/09 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers