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类
Apr 09 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
yii实现创建验证码实例解析
Jul 31 PHP
php面向对象编程self和static的区别
May 08 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP分享图片的生成方法
Apr 25 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php导出excel格式数据问题
2014/03/11 PHP
php中动态变量用法实例
2015/06/10 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
js直接编辑当前cookie的脚本
2008/09/14 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
JS实现轮播图效果
2020/01/11 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python单链表实现代码实例
2013/11/21 Python
python学习之编写查询ip程序
2016/02/27 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python识别html主要文本框过程解析
2020/02/18 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
Born鞋子官网:Born Shoes
2017/04/06 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
Java平台和其他软件平台有什么不同
2015/06/05 面试题
酒店拾金不昧表扬信
2014/01/18 职场文书
银行求职自荐信
2014/06/30 职场文书
宣传活动总结范文
2014/07/01 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
寻找成龙观后感
2015/06/12 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
婚礼答谢词范文
2015/09/29 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python