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 相关文章推荐
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
php 将excel导入mysql
Nov 09 PHP
Smarty Foreach 使用说明
Mar 23 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
PHP实现远程下载文件到本地
May 17 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
php获取域名的google收录示例
2014/03/24 PHP
PHP实现货币换算的方法
2014/11/29 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python正则表达式match和search用法实例
2015/03/26 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python实现微信表情包炸群功能
2021/01/28 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
计划生育工作汇报
2014/10/28 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书