PHP中的cURL是什么?
在PHP中,我在许多PHP项目中看到了cURL这个词。 它是什么? 它是如何工作的?
参考链接:( 什么是PHP中的cURL? )
cURL是一个库,可以让你在PHP中进行HTTP请求。 您需要了解的一切(以及大多数其他扩展)可以在PHP手册中find。
为了使用PHP的cURL函数,你需要安装»libcurl包。 PHP要求您使用libcurl 7.0.2-beta或更高版本。 在PHP 4.2.3中,您将需要libcurl 7.9.0或更高版本。 从PHP 4.3.0开始,您将需要一个7.9.8或更高版本的libcurl版本。 PHP 5.0.0需要libcurl版本7.10.5或更高版本。
你也可以在没有cURL的情况下发出HTTP请求,虽然它需要在php.ini
文件中启用allow_url_fopen
。
// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled) print file_get_contents('http://www.example.com/');
cURL是一种方法,你可以从你的代码中find一个URL来获得html响应。 cURL表示客户端URL,它允许您与其他URL进行连接,并在您的代码中使用它们的响应。
CURL在PHP中:
概要:
PHP中的curl_exec
命令是从控制台使用curl
的桥梁。 curl_exec可以方便快捷地执行GET / POST请求,从JSON等其他服务器接收响应并下载文件。
警告,危险:
如果使用不当, curl
是邪恶和危险的,因为它只是从互联网上获取数据。 有人可以在你的curl和其他服务器之间进行连接,并在你的响应中注入一个rm -rf /
,然后为什么我放弃了一个控制台, ls -l
甚至不再工作? 因为你错误地低估了curl的危险力量。 即使您正在与自己的服务器通话,也不要相信任何从curl中回来的东西都是安全的。 你可能会拖回恶意软件,以减轻他们的财富愚蠢。
例子:
这些都是在Ubuntu 12.10上完成的
-
基本的命令行curl:
el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 492k 100 492k 0 0 1077k 0 --:--:-- --:--:-- --:--:-- 1240k
那么你可以在Firefox中打开你的gif:
firefox mycat.gif
光荣的猫进化弓形虫导致妇女保持周围的猫和男人同样保持周围的妇女。
-
cURL示例获取请求命中google.com,回显到命令行:
这是通过phpshterminal完成的:
php> $ch = curl_init(); php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com'); php> curl_exec($ch);
其中打印和压缩浓缩HTML和JavaScript(从谷歌)到控制台的混乱。
-
cURL示例将响应文本放入一个variables中:
这是通过phpshterminal完成的:
php> $ch = curl_init(); php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif'); php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); php> $contents = curl_exec($ch); php> echo $contents;
variables现在包含一个猫的animationgif的二进制文件,可能性是无限的。
-
在PHP文件中做一个curl:
把这段代码放到一个名为myphp.php的文件中:
<?php $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com'); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($curl_handle); curl_close($curl_handle); if (empty($buffer)){ print "Nothing returned from url.<p>"; } else{ print $buffer; } ?>
然后通过命令行运行它:
php < myphp.php
你跑myphp.php并通过php解释器执行这些命令,并倾倒了大量的杂乱HTML和JavaScript屏幕。
您可以使用curl来执行
GET
和POST
请求,您只需指定以下定义的参数: http : //curl.haxx.se/docs/httpscripting.html#POST
提醒危险:
小心倾倒卷发输出,如果有任何解释和执行,你的箱子是拥有的,你的信用卡信息将出售给第三方,你会得到一个神秘的900美元的阿拉巴马州单人地板公司的收费是海外信用卡诈骗犯罪前环。
cURL是一种方法,你可以从你的代码中获得一个URL来获得HTML响应。 它用于PHP语言的命令行cURL。
<?php // Step 1 $cSession = curl_init(); // Step 2 curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl"); curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true); curl_setopt($cSession,CURLOPT_HEADER, false); // Step 3 $result=curl_exec($cSession); // Step 4 curl_close($cSession); // Step 5 echo $result; ?>
步骤1:使用curl_init()
初始化curl会话。
第2步:设置CURLOPT_URL
选项。 这个值是我们发送请求的URL。 使用参数q=
添加search项curl
。 为CURLOPT_RETURNTRANSFER
设置选项。 True会告诉curl返回string,而不是打印出来。 为CURLOPT_HEADER
设置选项,false将告诉curl忽略返回值中的头部。
第3步:使用curl_exec()
执行curl会话。
第4步:closures我们创build的curl会话。
第5步:输出返回string。
public function curlCall($apiurl, $auth, $rflag) { $ch = curl_init($apiurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($auth == 'auth') { curl_setopt($ch, CURLOPT_USERPWD, "passw:passw"); } else { curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1"); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $dt = curl_exec($ch); curl_close($ch); if($rflag != 1) { $dt = json_decode($dt,true); } return $dt; }
这也用于authentication。 我们也可以设置用户名和密码进行validation。
有关更多function,请参阅用户手册或以下教程:
http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl
PHP中的cURL是使用php语言中的命令行cURL的桥梁
PHP的cURL扩展旨在允许您在PHP脚本中使用各种Web资源。
curl
- cURL是一种方法,你可以从你的代码中获得一个URL来获得HTML响应。
- 它用于PHP语言的命令行cURL。
- cURL是一个库,可以让你在PHP中进行HTTP请求。
PHP支持由Daniel Stenberg创build的libcurl,它允许你连接许多不同types的服务器,并与许多不同types的协议通信。 libcurl目前支持http,https,ftp,gopher,telnet,dict,file和ldap协议。 libcurl还支持HTTPS证书,HTTP POST,HTTP PUT,FTP上传(这也可以用PHP的ftp扩展完成),基于HTTP表单的上传,代理,cookie和用户名密码authentication。
一旦你用cURL支持编译PHP,你可以开始使用cURL函数。 cURL函数背后的基本思想是使用curl_init()初始化cURL会话,然后可以通过curl_setopt()设置传输的所有选项,然后可以使用curl_exec()执行会话,然后执行使用curl_close()完成会话。
示例代码
// error reporting error_reporting(E_ALL); ini_set("display_errors", 1); //setting url $url = 'http://example.com/api'; //data $data = array("message" => "Hello World!!!"); try { $ch = curl_init($url); $data_string = json_encode($data); if (FALSE === $ch) throw new Exception('failed to initialize'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string))); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); $output = curl_exec($ch); if (FALSE === $output) throw new Exception(curl_error($ch), curl_errno($ch)); // ...process $output now } catch(Exception $e) { trigger_error(sprintf( 'Curl failed with error #%d: %s', $e->getCode(), $e->getMessage()), E_USER_ERROR); }
欲了解更多信息,请检查 –
- curl
- cURL函数
首先让我们理解curl,libcurl和PHP / cURL的概念。
-
curl :使用URL语法获取或发送文件的命令行工具。
-
libcurl :Daniel Stenberg创build的一个库,它允许你连接许多不同types的服务器,并与许多不同types的协议进行通信。 libcurl目前支持http,https,ftp,gopher,telnet,dict,file和ldap协议。 libcurl还支持HTTPS证书,HTTP POST,HTTP PUT,FTP上传(这也可以用PHP的ftp扩展完成),基于HTTP表单的上传,代理,cookie和用户名密码authentication。
-
PHP / cURL : PHP的模块,使PHP程序可以使用libcurl。
如何使用它:
步骤1:使用curl_init()初始化一个curl会话。
第二步:为CURLOPT_URL设置选项。 这个值是我们发送请求的URL。使用参数“q =”添加search项“curl”。设置选项CURLOPT_RETURNTRANSFER,true将告诉curl返回string而不是打印出来。 为CURLOPT_HEADER设置选项,false将告诉curl忽略返回值中的头部。
第3步:使用curl_exec()执行curl会话。
第四步:closures我们创build的curl会话。
步骤5:输出返回string。
制作演示 :
您将需要创build两个PHP文件,并将其放置到您的Web服务器可以从中提供PHP文件的文件夹中。 在我的情况下,我把它们放在/ var / www /为简单起见。 这两个文件被命名为:
1.使用curl.php和2. helloservice.php 。
helloservice.php非常简单,基本上只是回应它得到的任何数据:
<?php // Here is the data we will be sending to the service $some_data = array( 'message' => 'Hello World', 'name' => 'Anand' ); $curl = curl_init(); // You can also set the URL you want to communicate with by doing this: // $curl = curl_init('http://localhost/echoservice'); // We POST the data curl_setopt($curl, CURLOPT_POST, 1); // Set the url path we want to call curl_setopt($curl, CURLOPT_URL, 'http://localhost/helloservice.php'); // Make it so the data coming back is put into a string curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Insert the data curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data); // You can also bunch the above commands into an array if you choose using: curl_setopt_array // Send the request $result = curl_exec($curl); // Get some cURL session information back $info = curl_getinfo($curl); echo 'content type: ' . $info['content_type'] . '<br />'; echo 'http code: ' . $info['http_code'] . '<br />'; // Free up the resources $curl is using curl_close($curl); echo $result; ?>
Curl不过是PHP的扩展,它inheritance了主要为Linux / Unix命令行工具编写的正常curl命令和库的行为
Curl是什么? cURL代表客户端URL。 cURL用于将数据发送到任何URL。 有关curl究竟是什么的更多细节,请访问CURL网站
PHP中的cURL现在PHP中引入了相同的概念,通过不同的协议(例如HTTP或FTP)将数据发送到任何可访问的URL。 有关更多详细信息,请参阅PHP Curl教程