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中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php5.3 注意事项说明
Jul 01 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
Linux下php5.4启动脚本
Aug 03 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
js post方式传递提交的实现代码
2010/05/31 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
Bootstrap表单布局
2016/07/19 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Python标准库sched模块使用指南
2017/07/06 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
深入浅析python的第三方库pandas
2020/02/13 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
美容师的职业规划书
2013/12/27 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
公司授权委托书
2014/10/17 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
课改心得体会范文
2016/01/25 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers