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中使用Oracle数据库(1)
Oct 09 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP简单遍历对象示例
2016/09/28 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
小学兴趣小组活动总结
2014/07/07 职场文书
奖励申请报告范文
2015/05/15 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle