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 23 PHP
ajax php 实现写入数据库
Sep 02 PHP
PHP教程 变量定义
Oct 23 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
php中cookie的使用方法
Mar 29 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
PHP中余数、取余的妙用
Jun 29 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
php for 循环语句使用方法详细说明
2010/05/09 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
MooTools 1.2介绍
2009/09/14 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
js实现碰撞检测
2021/01/29 Javascript
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
关于Python作用域自学总结
2019/06/10 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
中级会计职业生涯规划书
2014/03/01 职场文书
合伙经营协议书范本
2014/04/18 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python