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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
初探PHP5
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php之Memcache学习笔记
Jun 17 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
PHP制作万年历
Jan 07 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
PHP的PDO操作简单示例
Mar 30 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
PHP 图片处理
2020/09/16 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JavaScript 程序编码规范
2010/11/23 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
js实现弹框效果
2021/03/24 Javascript
销售主管的自我评价分享
2014/01/03 职场文书
运动会广播稿100字
2014/01/11 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
Python音乐爬虫完美绕过反爬
2021/08/30 Python
详解Python内置模块Collections
2022/03/22 Python
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android