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的网址
Nov 25 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
php防止sql注入的方法详解
Feb 20 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 PHP
php解析非标准json、非规范json的方式实例
May 10 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
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
使用php实现截取指定长度
2013/08/06 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JS常用函数使用指南
2014/11/23 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
js 实现碰撞检测的示例
2020/10/28 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
使用SAE部署Python运行环境的教程
2015/05/05 Python
python九九乘法表的实例
2017/09/26 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
大四本科生的自我评价
2013/12/30 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
新学期标语
2014/06/30 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
检讨书之工作不认真
2019/08/14 职场文书