PHP扩展CURL的用法详解


Posted in PHP onJune 20, 2014

实现的功能:

1、实现远程获取和采集内容

2、实现PHP 网页版的FTP上传下载

3、实现模拟登陆:去一个邮件系统,curl可以模拟cookies

4、实现接口对接(API),数据传输等:通过一个平台发送短信啊,抓取和传递所传输的信息。

5、实现模拟Cookie等:登陆的状态下才可以操作一些属性。

如何使用CURL功能

默认情况加PHP是不支持CURL的,需要在php.ini中开启该功能

;extension=php_curl.dll前面的分号去掉

1  整个操作过程中第一步是用cur_init()函数进行初始化

$curl = curl_init(‘3water.com')

2.用curl_setopt()函数进行设置选项。

3.设置后,进行执行事务 curl_exec($curl);

4 最后关闭curl_close();

使用PHP CURL实现传输和获取功能(post传输方式):获取远程网页数据

$user = "admin";
$pass = "admin";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init(); //初始化一个CURL对象
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/login.php");
//设置你所需要抓取的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中
假设上面的0换成1的话,那么接下来的$data就需要echo一下。
curl_setopt($ch, CURLOPT_POST, 1);
//post提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
//运行curl,请求网页。
curl_close($ch);
[/code]

实现远程模拟登陆最基础部分。

curl也还是需要配置用户名和密码的,只不过是被浏览器隐藏了。

============================================================================

curl模拟登陆

模拟登陆:就是不登陆到php100的论坛,也能查看到相应的信息。

分析登陆字段--->登陆后保留cookie状-->读取cookie并跳转到相关页-->抓取数

1、模拟登陆后创建一个文件保存cookie内容

2、通过读取生成的cookie内容模拟用户登陆状态

3、到相关页面获取所需内容

tempname创建一个临时文件

tempnam() 函数创建一个具有唯一文件名的临时文件。 若成功,则该函数返回新的临时文件名。若失败,则返回 false。

tempnam(dir,prefix)

参数 描述

dir 必需。规定创建临时文件的目录。

prefix 必需。规定文件名的开头。

相当于,fopen  fwirte  fclose

它可以返回一个布尔值。使用第三方来登陆你的QQ、msn是很危险的,因为它可以记录你的登录状态,抓取你的用户名和密码。

使用CURL模拟登陆到PHP100论坛

1、分析登陆所需input框字段名和所需字段数量

2、保存cookie 模拟登陆后获取会员金币数量

代码:

//初始化一个 cURL 对象
$curl = curl_init();
//设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, " http://www.baidu.com ");
//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
//运行cURL,请求网页
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, " http://localhost/curl/login.php ");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
?>
if($_POST['user']=="admin"){
 echo "";
}else{
 echo "";
}
//print_r($_POST);
?>
PHP 相关文章推荐
网络资源
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
分享一个php 的异常处理程序
Jun 22 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
Yii 框架入口脚本示例分析
May 19 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 #PHP
ThinkPHP3.1查询语言详解
Jun 19 #PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 #PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 #PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 #PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 #PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 #PHP
You might like
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
使用Python对Excel进行读写操作
2017/03/30 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
centos7之Python3.74安装教程
2019/08/15 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python实现与redis交互操作详解
2020/04/21 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
幼师求职自荐信
2014/05/31 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
银行业务授权委托书
2014/10/10 职场文书
党员活动总结
2015/02/04 职场文书
管理人员岗位职责
2015/02/14 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
Python+Tkinter制作专属图形化界面
2022/04/01 Python