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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 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下载excel无法打开的解决方法
2013/12/24 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
js一组验证函数
2008/12/20 Javascript
extjs form textfield的隐藏方法
2008/12/29 Javascript
js快速排序的实现代码
2013/12/08 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
pandas 选择某几列的方法
2018/07/03 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
Django 返回json数据的实现示例
2020/03/05 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
保安部任务及岗位职责
2014/02/25 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
表扬信范文
2019/04/22 职场文书
2019同学聚会主持词
2019/05/06 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL