六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

php curl 快速入门

[复制链接]

升级  14.6%

179

主题

179

主题

179

主题

进士

Rank: 4

积分
573
 楼主| 发表于 2013-1-25 03:30:55 | 显示全部楼层 |阅读模式
     cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。更让人高兴的是,PHP也支持 cURL 库。本文将介绍PHP中如何运用它。



基本结构

先来看一下在PHP中建立cURL请求的基本步骤:


  • 初始化
  • 设置变量
  • 执行并获取结果
  • 释放cURL句柄


          1. 初始化

$ch = curl_init();



    2. 设置选项,包括URL

curl_setopt($ch, CURLOPT_URL,“http://www.nettuts.com”);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);



    3. 执行并获取HTML文档内容

$output = curl_exec($ch);



    4. 释放curl句柄

curl_close($ch);



    第二步(也就是 curl_setopt() )最为关键,有一长串cURL参数可供设置,它们能指定URL请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些常用也更有用的选项。



检查错误

你可以加一段检查错误的语句(虽然这并不是必需的):

    // …

$output = curl_exec($ch);

if ($output === FALSE) {

echo “cURL Error: ” . curl_error($ch);

}

    // …

    注意,比较的时候我们用的是“=== FALSE”,而非“== FALSE”。因为我们得区分空输出和布尔值FALSE,后者才是真正的错误。



用POST方法发送数据



    当发起GET请求时,数据可以通过“查询字串”(query string)传递给一个URL。例如,在google中搜索时,搜索关键即为URL的查询字串的一部分:

http://www.google.com/search?q=nettuts

这种情况下你可能并不需要cURL来模拟。把这个URL丢给“file_get_contents()”就能得到相同结果。



    不过有一些HTML表单是用POST方法提交的。这种表单提交时,数据是通过 HTTP请求体(request body) 发送,而不是查询字串。例如,当使用CodeIgniter论坛的表单,无论你输入什么关键字,总是被POST到如下页面:

http://codeigniter.com/forums/do_search/

你可以用PHP脚本来模拟这种URL请求。首先,新建一个可以接受并显示POST数据的文件,我们给它命名为post_output.php:

print_r($_POST);

接下来,写一段PHP脚本来执行cURL请求:

$url = “http://localhost/post_output.php”;

$post_data = array (

“foo” => “bar”,

“query” => “Nettuts”,

“action” => “Submit”

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 我们在POST数据哦!

curl_setopt($ch, CURLOPT_POST, 1);

// 把post的变量加上

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

echo $output;

     这段脚本发送一个POST请求给 post_output.php ,这个页面 $_POST 变量并返回,我们利用cURL捕捉了这个输出。



小结

    今天我们一起学习了cURL 库。希望你喜欢。下一次如果要发起URL请求时,请考虑下cURL吧!

 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表