php curl_init函数用法


Posted in PHP onJanuary 31, 2014

无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。

PHP中的CURL函数库(Client URL Library Function)

curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息

curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。

例子一: 基本例子
基本例子

<?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭URL请求
curl_close($curl);
// 显示获得的数据
var_dump($data);
?>

例子二: POST数据

sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
POST数据

<?php
$phoneNumber = '13812345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.lxvoip.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?>

例子三:使用代理服务器
使用代理服务器

<?php 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.cmx8.cn');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.lxvoip.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?>

例子四: 模拟登录

Curl 模拟登录 discuz 程序,适合DZ7.0,将username改成你的用户名,userpass改成你的密码就可以了.
Curl 模拟登录 discuz 程序

<?php   !extension_loaded('curl') && die('The curl extension is not loaded.');   
$discuz_url = 'http://www.lxvoip.com';//论坛地址   
$login_url = $discuz_url .'/logging.php?action=login';//登录页地址   
$get_url = $discuz_url .'/my.php?item=threads'; //我的帖子   
$post_fields = array();   
//以下两项不需要修改   
$post_fields['loginfield'] = 'username';   
$post_fields['loginsubmit'] = 'true';   
//用户名和密码,必须填写   
$post_fields['username'] = 'lxvoip';   
$post_fields['password'] = '88888888';   
//安全提问   
$post_fields['questionid'] = 0;   
$post_fields['answer'] = '';   
//@todo验证码   
$post_fields['seccodeverify'] = '';   
//获取表单FORMHASH   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
$contents = curl_exec($ch);   
curl_close($ch);   
preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);   
if(!empty($matches)) {   
    $formhash = $matches[1];   
} else {   
    die('Not found the forumhash.');   
}   
//POST数据,获取COOKIE   
$cookie_file = dirname(__FILE__) . '/cookie.txt';   
//$cookie_file = tempnam('/tmp');   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
curl_setopt($ch, CURLOPT_POST, 1);   
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);   
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);   
curl_exec($ch);   
curl_close($ch);   
//带着上面得到的COOKIE获取需要登录后才能查看的页面内容   
$ch = curl_init($get_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);   
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);   
$contents = curl_exec($ch);   
curl_close($ch);   
var_dump($contents);
PHP 相关文章推荐
PHP简单系统查询模块代码打包下载
Jun 07 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
PHP图像处理类库及演示分享
May 17 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
php字符串操作常见问题小结
Oct 11 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 PHP
curl实现站外采集的方法和技巧
Jan 31 #PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 #PHP
php使用百度翻译api示例分享
Jan 31 #PHP
php比较两个绝对时间的大小
Jan 31 #PHP
2014过年倒计时示例
Jan 31 #PHP
php curl post 时出现的问题解决
Jan 30 #PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 #PHP
You might like
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
调试php程序的简单步骤
2019/10/04 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python中的多行注释文档编写风格汇总
2016/06/16 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python 表格打印代码实例解析
2019/10/12 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
阿里云:Aliyun.com
2017/02/15 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
股权转让意向书
2014/04/01 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
品酒会策划方案
2014/05/26 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
优秀员工自荐书
2015/03/06 职场文书
家装电话营销开场白
2015/05/29 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python