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下MAIL的另一解决方案
Oct 09 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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-redis中文文档介绍
2013/02/07 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
如何提高数据访问速度
2016/12/26 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python程序退出方式小结
2017/12/09 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
python实现与redis交互操作详解
2020/04/21 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
外语专业毕业生自我评价分享
2013/10/05 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
APP界面设计技巧和注意事项
2022/04/29 杂记