Php

Php curl пример: Примеры использования cURL в PHP

Содержание

Полезные примеры использования cURL с PHP

cURL и его расширение для PHP Libcurl, очень полезный инструмент для таких задач, как моделирование веб-браузера, отправка  формы или авторизация в веб-сервисах. В этой статье я покажу вам некоторые полезные вещи, которые вы можете делать с помощью PHP и cURL.

Проверяем доступность нужного нам веб-сайта

Хотите знать, доступен ли нужный вам веб-сайт? cURL может вам помочь в этом. Этот скрипт можно использовать для мониторинга своих веб-сайтов.

Не забудьте изменить URL веб-сайта на тот который вы хотите проверить, в строке 3. После этого, просто выполните этот скрипт и это позволит вам узнать о доступности сайта.

<?php

 if (isDomainAvailible(‘http://www.webmasters.by’))
 {
 echo «Сайт доступен!»;
 }
 else
 {
 echo «Упс, что то не открывается.»;
 }

 //возвращает true, если домен доступен, в противном случае false
 function isDomainAvailible($domain)
 {
 //проверяем валидный ли url
 if(!filter_var($domain, FILTER_VALIDATE_URL))
 {
 return false;
 }

 //инициализация curl
 $curlInit = curl_init($domain);
 curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
 curl_setopt($curlInit,CURLOPT_HEADER,true);
 curl_setopt($curlInit,CURLOPT_NOBODY,true);
 curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

 //получаем ответ
 $response = curl_exec($curlInit);

 curl_close($curlInit);

 if ($response) return true;

 return false;
 }
?>

Замена cURL для file_get_contents ()

Функция file_get_contents() очень полезна, но она, к сожалению, отключена по умолчанию на некоторых хостингах. Используя cURL, мы можем написать аналогичную функцию, которая работает точно так же, как и file_get_contents().

function file_get_contents_curl($url) {
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //чтобы cURL возвращал данные, а не выводил в браузер.
 curl_setopt($ch, CURLOPT_URL, $url);

 $data = curl_exec($ch);
 curl_close($ch);

 return $data;
}

Получаем последний статус в Твиттере

Используя PHP с cURL можно довольно легко получить статус конкретного пользователя в Твиттере. Данную информацию можно выводить, например, в своем блоге.

function get_status($twitter_id, $hyperlinks = true) {
 $c = curl_init();
 curl_setopt($c, CURLOPT_URL, «http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1»);
 curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
 $src = curl_exec($c);
 curl_close($c);
 preg_match(‘/<text>(.*)<\/text>/’, $src, $m);
 $status = htmlentities($m[1]);
 if( $hyperlinks ) $status = ereg_replace(«[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]», ‘<a href=»%5C%22%5C%5C0%5C%22″>\\0</a>’, $status);
 return($status);
}

Эта функция очень проста в использовании:

echo get_status(‘twitter_id’);

Twitter: испытание дружбы между двумя пользователями

Если вы хотите знать, читает ли конкретный пользователь ваши твиты, то вы можете использовать Twitter API. Этот скрипт будет выводить true, если два пользователя, указанные в строках 18 и 19, подписанны на твиты друг друга. В противном случае вернет false.

function make_request($url) {
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 $result = curl_exec($ch);
 curl_close($ch);
 return $result;
}

/* получаем соответствие */
function get_match($regex,$content) {
 preg_match($regex,$content,$matches);
 return $matches[1];
}

/* персоны для теста */
$person1 = ‘phpsnippets’;
$person2 = ‘catswhocode’;

/* посылаем запрос в twitter */
$url = ‘https://api.twitter.com/1/friendships/exist’;
$format = ‘xml’;

/* проверяем */
$persons12 = make_request($url.’.’.$format.’?user_a=’.$person1.’&amp;user_b=’.$person2);
$result = get_match(‘/<friends>(.*)<\/friends>/isU’,$persons12);
echo $result; // returns «true» or «false»

Загрузка и сохранение изображений со страницы, используя cURL

Эти функции могут быть очень полезны: передайте скрипту URL веб-страницы, и он сохранит все изображения с этой страницы на сервер.

function getImages($html) {
 $matches = array();
 $regex = ‘~http://somedomain.com/images/(.*?)\.jpg~i’;
 preg_match_all($regex, $html, $matches);
 foreach ($matches[1] as $img) {
 saveImg($img);
 }
}

function saveImg($name) {
 $url = ‘http://somedomain.com/images/’.$name.’.jpg’;
 $data = get_data($url);
 file_put_contents(‘photos/’.$name.’.jpg’, $data);
}

$i = 1;
$l = 101;

while ($i < $l) {
 $html = get_data(‘http://somedomain.com/id/’.$i.’/’);
 getImages($html);
 $i += 1;
}

Конвертация валют с помощью cURL и Google

Конвертирование валют не очень трудно сделать, но так как курс валют колеблется все время, нам, безусловно, нужно использовать такой сервис как у Google, чтобы получить самые последние данные. Функция currency() принимает 3 параметра: первая валюта, вторая валюта и сумма.

function currency($from_Currency,$to_Currency,$amount) {
 $amount = urlencode($amount);
 $from_Currency = urlencode($from_Currency);
 $to_Currency = urlencode($to_Currency);
 $url = «http://www. google.com/ig/calculator?hl=en&amp;q=$amount$from_Currency=?$to_Currency»;
 $ch = curl_init();
 $timeout = 0;
 curl_setopt ($ch, CURLOPT_URL, $url);
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch,  CURLOPT_USERAGENT , «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)»);
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 $rawdata = curl_exec($ch);
 curl_close($ch);
 $data = explode(‘»‘, $rawdata);
 $data = explode(‘ ‘, $data[‘3’]);
 $var = $data[‘0’];
 return round($var,2);
}

Получаем размер удаленного файла при помощи cURL

Хотите иметь возможность посчитать размер конкретного файла, расположенного на другом сервере? Эта функция может вам помочь. Она принимает 3 параметра: URL файла, и, в случае если файл защищен паролем, имя пользователя и пароль.

function remote_filesize($url, $user = «», $pw = «»){
 ob_start();
 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_HEADER, 1);
 curl_setopt($ch, CURLOPT_NOBODY, 1);

 if(!empty($user) &amp;&amp; !empty($pw))
 {
 $headers = array(‘Authorization: Basic ‘ .   base64_encode(«$user:$pw»));
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 }

 $ok = curl_exec($ch);
 curl_close($ch);
 $head = ob_get_contents();
 ob_end_clean();

 $regex = ‘/Content-Length:\s([0-9].+?)\s/’;
 $count = preg_match($regex, $head, $matches);

 return isset($matches[1]) ? $matches[1] : «unknown»;
}

Загрузка через FTP при помощи cURL

PHP имеет FTP библиотеку, но вы также можете использовать cURL для загрузки файлов на FTP-сервер. Вот рабочий пример:

// открываем файл
$file = fopen(«/path/to/file», «r»);

// url содержит почти всю необходимую информацию
$url = «ftp://username:<span>Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.</span><script type=’text/javascript’>
        document.getElementById(‘cloaka59fe7e89fd8b7e9a07eb0986943d804’).innerHTML = »;
        var prefix = ‘&#109;a’ + ‘i&#108;’ + ‘&#116;o’;
        var path = ‘hr’ + ‘ef’ + ‘=’;
        var addya59fe7e89fd8b7e9a07eb0986943d804 = ‘p&#97;ssw&#111;rd’ + ‘&#64;’;
        addya59fe7e89fd8b7e9a07eb0986943d804 = addya59fe7e89fd8b7e9a07eb0986943d804 + ‘myd&#111;m&#97;&#105;n’ + ‘&#46;’ + ‘c&#111;m’;
        var addy_texta59fe7e89fd8b7e9a07eb0986943d804 = ‘p&#97;ssw&#111;rd’ + ‘&#64;’ + ‘myd&#111;m&#97;&#105;n’ + ‘&#46;’ + ‘c&#111;m’;document. getElementById(‘cloaka59fe7e89fd8b7e9a07eb0986943d804’).innerHTML += ‘<a ‘ + path + ‘\» + prefix + ‘:’ + addya59fe7e89fd8b7e9a07eb0986943d804 + ‘\’>’+addy_texta59fe7e89fd8b7e9a07eb0986943d804+'<\/a>’;
    </script>:21/path/to/new/file»;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// устанавливаем опции
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize(«/path/to/file»));

// Устанавливаем режим ASCII (т.е. файл текстовый)
curl_setopt($ch, CURLOPT_FTPASCII, 1);

$output = curl_exec($ch);
curl_close($ch);

Я надеюсь эти примеры будут полезны вам.

Перевод статьи с catswhocode.com

Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

cURL тестирование HTTP заголовков [АйТи бубен]

cURL это инструмент, позволяющий взаимодействовать с различными серверами и поддерживающий множество протоколов: HTTP, FTP, TELNET и др. Изначально cURL — это служебная программа для командной строки. PHP поддерживает работу с библиотекой cURL.

cURL позволяет легко выполнять любые HTTP методы для нужного ресурса. Можно передавать любые параметры запросов и заголовков, а так же проверять ответные заголовки и данные. Инструмент коммандной строки «curl», стандартен для большинства *nix систем. Для пользователей Windows подойдёт MinGW/MSYS.

Пример использования и базовые опции:

# curl -X PUT www.example.com/bar/1 -d "some=var" -d "other=var2" -H "Accept: text/json" -I
-X [METHOD] определяет HTTP метод.
-d «name=value» устанавливает имя и значения переменных в POST/PUT.
-H [HEADER] устанавливает заголовок.
-I отображает заголовки ответа.

Пример авторизация Метод HTTP POST на PHP с использованием curl:

Источник: htmlweb.ru

<?
function login($url,$login,$pass){
   $ch = curl_init();
   if(strtolower((substr($url,0,5))=='https')) { // если соединяемся с https
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
   }
   curl_setopt($ch, CURLOPT_URL, $url);
   // откуда пришли на эту страницу
   curl_setopt($ch, CURLOPT_REFERER, $url);
   // cURL будет выводить подробные сообщения о всех производимых действиях
   curl_setopt($ch, CURLOPT_VERBOSE, 1);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS,"login=". $login."&pass=".$pass);
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   //сохранять полученные COOKIE в файл
   curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
   $result=curl_exec($ch);
 
   // Убеждаемся что произошло перенаправление после авторизации
   if(strpos($result,"Location: home.php")===false) die('Login incorrect');
 
   curl_close($ch);
 
   return $result;
}
 
// чтение страницы после авторизации
function Read($url){
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   // откуда пришли на эту страницу
   curl_setopt($ch, CURLOPT_REFERER, $url);
   //запрещаем делать запрос с помощью POST и соответственно разрешаем с помощью GET
   curl_setopt($ch, CURLOPT_POST, 0);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   //отсылаем серверу COOKIE полученные от него при авторизации
   curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT']. '/cookie.txt');
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
 
   $result = curl_exec($ch);
 
   curl_close($ch);
 
   return $result;
}
?>

Функция вывод размер удаленного файла, используется библиотека PHP curl и HTTP метод запроса HEAD (параметр CURLOPT_NOBODY).

function getRemoteFilesize($url){
     $ch = curl_init($url);
 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
     curl_setopt($ch, CURLOPT_HEADER, TRUE);
     curl_setopt($ch, CURLOPT_NOBODY, TRUE);
 
     $data = curl_exec($ch);
     $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
 
     curl_close($ch);
     return $size;
}
 
$url = 'https://example.com/file.csv';
echo getRemoteFilesize($url);
echo "\n";

PHP: Curl

Итак, Curl — это проект, целью которого является интерпретация URL и выборка из них данных, за проект Curl отвечает Дениел Стенберг (Daniel Stenberg). Почти все сценарии, использующие Curl — схожи по своему принципу:

В будущих статьях я планирую освещать рецепты типовых задач, решаемых при помощи Curl. Подробнее о проекте Curl можно узнать по адресу

КонстантаОписание
CURLE_ABORTED_BY_CALLBACKФункция callback прервала операцию
CURLE_BAD_CALLING_ORDERНеверный порядок вызова функций
CURLE_BAD_FUNCTION_ARGUMENTНеверный параметр функции
CURLE_BAD_PASSWORD_ENTEREDВведен неправильный пароль
CURLE_COULDNT_CONNECTНевозможно подключиться к узлу
CURLE_COULDNT_RESOLVE_HOSTНевозможно обнаружить узел
CURLE_COULDNT_RESOLVE_PROXYНевозможно обнаружить прокси-сервер
CURLE_FAILED_INITОшибка инициализации
CURLE_FILE_COULDNT_READ_FILEНельзя прочитать файл
CURLE_FTP_ACCESS_DENIEDВо время FTP-операции доступ невозможен
CURLE_FTP_BAD_DOWNLOAD_RESUMEНеудачное продолжение FTP-загрузки
CURLE_FTP_CANT_GET_HOSTНевозможно обнаружить FTP-узел
CURLE_FTP_CANT_RECONNECTНевозможно повторно подключиться к FTP-серверу
CURLE_FTP_COULDNT_GET_SIZEОшибка FTP-команды SIZE
CURLE_FTP_COULDNT_RETR_FILEНевозможно найти файл по FTP-соединению
CURLE_FTP_COULDNT_SET_ASCIIНевозможно установить режим ASCII
CURLE_FTP_COULDNT_SET_BINARYНевозможно установить режим BINARY
CURLE_FTP_COULDNT_STOR_FILEОшибка FTP-команды STOR
CURLE_FTP_COULDNT_USE_RESTОшибка FTP-команды REST
CURLE_FTP_PORT_FAILEDОшибка FTP-команды PORT
CURLE_FTP_QUOTE_ERRORОшибка FTP-команды QUOTE
CURLE_FTP_USER_PASSWORD_INCORRECTНеправильная пара пользователь-пароль для FTP-соединения
CURLE_FTP_WEIRD_227_FORMATНераспознанный ответ на FTP-команду 227
CURLE_FTP_WEIRD_PASS_REPLYНераспознанный ответ на FTP-команду PASS
CURLE_FTP_WEIRD_PASV_REPLYНераспознанный ответ на FTP-команду PASV
CURLE_FTP_WEIRD_SERVER_REPLYНераспознанный ответ FTPrcepeepa
CURLE_FTP_WEIRD_USER_REPLYНераспознанный ответ USER FTP-протокола
CURLE_FTP_WRITE_ERRORFTP-сервер сообщает о проблемах при выполнении операций записи
CURLE_FUNCTION_NOT_FOUNDФункция LDAP не найдена
CURLE_HTTP_NOT_FOUNDHTTP-страница не найдена
CURLE_HTTP_POST_ERRORОшибка HTTP-команды post
CURLE_HTTP_RANGE_ERRORОшибка диапазона HTTP
CURLE_LDAP_CANNOT_BINDОшибка связи библиотеки LDAP
CURLE_LDAP_SEARCH_FAILEDОшибка поиска библиотеки LDAP
CURLE_LIBRARY_NOT_FOUNDБиблиотека LDAP не найдена
CURLE_MALFORMAT_USERНеправильно задано имя пользователя
CURLE_OKОшибок нет
CURLE_OPERATION_TIMEOUTEDТайм-аут операции
CURLE_OUT_OF_MEMORYНе хватает памяти
CURLE_PARTIAL_FILEБыла передана только часть файла
CURLE_READ_ERRORОшибка чтения на локальном устройстве
CURLE_SSL_CONNECT_ERRORОшибка SSL-соединения
CURLE_SSL_PEER_CERTIFICATEНепроверенный сертификат SSL
CURLE_TOO_MANY_REDIRECTSСлишком много переадресаций
CURLE_UNKNOWN_TELNET_OPTIONЗадан неизвестный параметр утилиты TELNET
CURLE_UNSUPPORTED_PROTOCOLПротокол не поддерживается
CURLE_UNSUPPORTED_PROTOCOLПротокол не поддерживается
CURLE_URL_MALFORMATОшибочный URL
CURLE_URL_MALFORMAT_USERОшибочный URL пользователя
CURLE_WRITE_ERRORОшибка записи на локальном устройстве
КонстантаОписание
CURLOPT_BINARYTRANSFERИспользуется с параметром, CURLOPT_RETURNTRANSFER. Это гарантирует возвращение двоичного значения
CURLOPT_CAINFOУказывает путь к файлу, содержащему один и более сертификатов, необходимых для проверки другого узла. Этот параметр действует только вместе с параметром CURLOPT_SSL_VERIFYPEER
CURLOPT_CAPATHУказывает путь к файлу, содержащему один или более сертификатов, необходимых для проверки другого узла. Этот параметр действует только вместе с параметром CURLOPT_SSL_VERIFYPEER
CURLOPT_CLOSEPOLICYИспользуется для установки политики закрытия соединения при его заполнении. Может иметь значение CURLCLOSEPOLICY_LEAST_RECENTLY_USED или CURLCLOSEPOLICY_OLDEST
CURLOPT_CONNECTTIMEOUTЗадает максимальное время ожидания соединения в секундах
CURLOPT_COOKIEИспользуется для задания файлов cookie в запросе. Он задается в виде строки со знаком равенства между именем файла cookie и значением value. Имена файлов cookie разделяются точкой с запятой. Например, cookiel=valueA; cookiel=valueB задает два файла cookie: cookiel и cookie2
CURLOPT_COOKIEFILEПуть, по которому размещаются файлы cookie по запросам. Этот файл может соответствовать формату Netscape Navigator или обычному формату HTTP-заголовка
CURLOPT_COOKIEJARЗадает путь к файлу, в котором сохраняются файлы cookie. Curl сохраняет любые файлы cookie, которые он получает во время запроса к этому файлу. Затем этот файл можно указывать в параметре CURLOPT_COOKIEFILE
CURLOPT_CRLFПри значении TRUE Curl преобразует символы новой строки, характерные для ОС Unix, в пары символов «возврат каретки перевод строки»
CURLOPT_CUSTOMREQUESTИспользуется для отсылки альтернативной команды при HTTP-запросе. В нем указывается только команда, а не вся строка запроса
CURLOPT_DNS_CACHE_TIMEOUTПараметр работы с кэшем поиска имен узлов. В нем задается время хранения имени в кэше (в секундах)
CURLOPT_DNS_USE_GLOBAL_CACHEПри значении TRUE Curl разделяет кэш поиска
имен узлов. Этот параметр не является защищенным с точки зрения потоков
CURLOPT_EGDSOCKETЗадает путь к сокету Entropy Gathering Daemon. Curl использует его в качестве генератора случайных чисел, который используется для SSL
CURLOPT_FAILONERRORПри значении TRUE коды HTTP-ответов больше 300 не приводят к возвращению страниц, обычно возвращаемых сервером
CURLOPT_FILEПредназначен для вывода сообщений в файл, а не в браузер
CURLOPT_FILETIMEПри значении TRUE Curl делает попытку получить время модификации запрошенного файла
CURLOPT_FOLLOWLOCATIONПри значении TRUE Curl просматривает заголовки переадресации, возвращаемые HTTP-серверами. Установите в TRUE, что бы Curl следовал редиректам.
CURLOPT_FORBID_REUSEПри значении TRUE Curl закрывает соединение после завершения обработки запроса
CURLOPT_FRESH_CONNECTПри значении TRUE Curl независимо от наличия соответствующего соединения в кэше создает новое соединение
CURLOPT_FTPAPPENDПри значении TRUE Curl при операции FTP выгрузки, вместо перезаписи выполняет добавление
CURLOPT_FTPLISTONLYПри значении TRUE Curl возвращает перечень файлов, хранящихся в FTP-каталоге
CURLOPT_FTPPORTЗадает настройки FTP-команды PORT, при этом запрашивается соединение с сервером. В этом параметре указываются IP-адрес, имя узла, имя сетевого интерфейса. Для использования адреса, используемого по умолчанию, указывается —
CURLOPT_FTP_USE_EPSVПо умолчанию, при FTP-передачах в пассивном режиме, Curl использует команду EPSV. Для того чтобы запретить использование этой команды, данный параметр должен иметь значение FALSE
CURLOPT_HEADERПри значении TRUE Curl включает в вывод заголовки
CURLOPT_HEADERFUNCTIONЗадает имя функции, которую вызывает Curl для каждого вызванного HTTP-заголовка. Эта функция должна принимать два аргумента: ресурс Curl и строку, содержащую полный заголовок
CURLOPT_HTTPGETПри значении TRUE Curl в HTTP-передачах использует метод GET. Это может понадобиться только при повторном использовании ресурса Curl
CURLOPT_HTTPHEADERПозволяет отправить HTTP-заголовки, прописанные вручную. Заголовки должны быть помещены в массив
CURLOPT_HTTPPROXYTUNNELПри значении TRUE Curl передает все запросы, пользуясь туннелем на прокси-сервере
CURLOPT_HTTP_VERSIONИспользуется для того, чтобы вынудить Curl использовать соответствующую версию протокола HTTP. Значение CURL_HTTP_VERSION_NONE задается, если право выбора предоставляется Curl. Для того чтобы использовалась версия HTTP/1.0, необходимо задать значение CURL_HTTP_VERSION_1_0. Для того чтобы использовалась версия HTTP/1.1, необходимо задать значение CURL_HTTP_VERSION_l_l
CURLOPT_INFILEЕсли в этом параметре указан открытый файловый поток, то Curl будет считывать туда ввод из файла
CURLOPT_INFILESIZEИспользуется для определения размера выгружаемого файла
CURLOPT_INTERFACEЗадает имя используемого интерфейса. Можно задавать имя интерфейса, имя узла или IP-адрес
CURLOPT_KRB4LEVELДля FTP-передач с помощью этого параметра можно указать уровень безопасности Kerberos. Значением этого параметра могут быть такие строки: clear, safe, confidential и private. Установка значения FALSE отключит безопасность Kerberos
CURLOPT_LOW_SPEED_LIMITИспользуется для снижения ограничения скорости передачи, которая задается в байтах в секунду. Если скорость передачи упадет ниже предела, заданного параметром CURLOPT_LOW_SPEED_TIME, Curl прервет передачу
CURLOPT_LOW_SPEED_TIMEПредназначен для снижения ограничения скорости передачи и используется с параметром CURLOPT_LOW_SPEED_LIMIT
CURLOPT_MAXCONNECTSЗадает размер кэша соединения
CURLOPT_MAXREDIRSИспользуется для задания максимального количества переадресаций
CURLOPT_MUTEПри значении TRUE PHP не генерирует вывод на браузер при выполнении функций Curl
CURLOPT_NETRCПри значении TRUE Curl при аутентификации пользователей просматривает путь ~/.netrc
CURLOPT_NOBODYПри значении TRUE Curl исключает из вывода основное тело HTTP-страницы
CURLOPT_NOPROGRESSПри значении FALSE Curl отображает индикатор работы. По умолчанию этот параметр имеет значение TRUE
CURLOPT_PASSWDFUNCTIONИспользуется для указания имени функции обработки запросов паролей. Эта функция должна принимать три аргумента: ресурс Curl, подсказку пароля, отправленную сервером, и ссылку, куда необходимо поместить пароль. Эта функция возвращает нуль в случае успешного завершения работы и значение, отличное от нуля, в случае возникновения ошибки. Для восстановления стандартной функциональности для этого параметра устанавливается значение FALSE
CURLOPT_PORTИспользуется для задания номера порта, применяемого в запросах
CURLOPT_POSTПри значении TRUE Curl делает HTTP-запрос POST с помощью кодировки application/x-www-form-urlencoded
CURLOPT_POSTFIELDSПредназначен для передачи всех данных операции post. Поля форматируются строго в соответствии с порядком
приема. Например, строка apple=l&ball=red&cat=45.56 будет соответствовать трем полям: apple, ball и cat
CURLOPT_POSTQUOTEПередает массив FTP-команд, выполняемых после главного запроса
CURLOPT_PROXYУстанавливается на прокси-сервере
CURLOPT_PROXYUSERPWDИспользуется для установки имени пользователя и его пароля, необходимых для прокси-сервера. При этом
используется формат username; password
CURLOPT_PUTПри значении TRUE Curl выполняет HTTP-запрос PUT. При этом необходимо задавать параметры CURLOPT INFILE и CURLOPT INFILESIZE
CURLOPT_QUOTEЗадает массив FTP-команд, выполняемых до главного запроса
CURLOPT_RANDOM_FILEЗадает путь к файлу, который будет читать Curl для задания начальных значений генератора случайных величин SSL
CURLOPT_RANGEИспользуется для задания диапазона заголовка, отправленного HTTP-сервером. Передается строка, содержащая смещение начала и конца строки в байтах, разделенные тире. При указании нескольких диапазонов они разделяются запятыми, например 100-150,233-502. О диапазонах можно узнать подробнее в спецификации протокола HTTP 1.1
CURLOPT_READFUNCTIONЗадает имя функции передачи данных другой стороне соединения. Эта функция должна принимать два аргумента: ресурс Curl и строку ссылки. Копирует данные в строку ссылки и возвращает количество байт. Возвращение нулевого значения свидетельствует о достижении конца файла
CURLOPT_REFERERИспользуется для задания значения поля Ref erer, передаваемого в HTTP-запросах
CURLOPT_RESUME_FROMПредназначен для возобновления передачи. Смещение задается в байтах
CURLOPT_RETURNTRANSFERОбычно Curl отправляет результаты команд непосредственно в браузер. Для получения результатов в виде возвращаемого значения утилиты curl_exec для этого параметра устанавливается значение TRUE
CURLOPT_SSLCERTЗадает путь к сертификату SSL в формате РЕМ (Privacy Enhanced Mail)
CURLOPT_SSLCERTPASSWDЗадает пароль, необходимый для чтения сертификата SSL, заданного параметром CURLOPT_SSLCERT
CURLOPT_SSLENGINEЗадает имя процессора SSL, который будет использоваться для частных ключей
CURLOPT_SSLENGINE_DEFAULTЗадает имя процессора SSL, который будет использоваться в большинстве случаев, исключая частные ключи
CURLOPT_SSLKEYЗадает путь к частному ключу. По умолчанию задается тип РЕМ, который может быть изменен параметром CURLOPT_SSLKEYTYPE
CURLOPT_SSLKEYPASSWDЗадает пароль, необходимый для использования с частным ключом, заданным параметром CURLOPT_SSLKEY
CURLOPT_SSLKEYTYPEЗадает тип частного ключа, заданного параметром CURLOPT_SSLKEY. Тип определяется одной из следующих строк: РЕМ, DER или ENG
CURLOPT_SSLVERSIONПредназначен для активизации второй или третьей версии SSL. Обычно Curl «угадывает» соответствующую версию протокола
CURLOPT_SSL_CIPHER_LISTИспользуется для определения списка шифров, которые будут использоваться при SSL-соединениях. Названия шифров разделяются точкой с запятой. Этот список задается в процессе компиляции OpenSSL
CURLOPT_SSL_VERIFYHOSTДля этого параметра устанавливается значение 1, если Curl проверяет имя сертификата SSL, или значение 2, для того чтобы было достаточно простого совпадения с именем узла
CURLOPT_SSL_VERIFYPEERПри значении TRUE Curl делает попытку проверить идентичность соединения с помощью сертификатов, заданных параметром CURLOPT_CAINFO
CURLOPT_STDERRЗадает открытый файловый поток, куда будут перенаправлены сообщения об ошибках
CURLOPT_TIMECONDITIONПредназначен для активизации условий передачи на основании анализа времени последней модификации удаленного файла. Для задания временного значения, которое будет использоваться для проверки этого условия, используется параметр CURLOPT_TIMEVALUE. Для соблюдения требования модификации файла с определенного момента времени используется параметр TIMECOND_IFMODSINCE. Для соблюдения требования отсутствия изменений файла с определенного момента времени используется параметр TIMECOND_ISUNMODSINCE
CURLOPT_TIMEOUTЗадает максимальное время в секундах, на протяжении которого может выполняться Curl-операция
CURLOPT_TIMEVALUEУстанавливает время в стандартном формате временной метки Unix, который используется параметром CURLOPT_TIMECONDITION
CURLOPT_TRANSFERTEXTПри значении TRUE Curl осуществляет FTP-передачи в формате ASCII и в тексте в формате LDAP вместо HTML
CURLOPT_UPLOADПри значении TRUE Curl выполняет НТТР-выгрузку. Необходимо установить CURLOPT_INFILE и CURLOPT_INFILESIZE
CURLOPT_URLЗадает исполняемый URL. Этот параметр можно установить и с помощью утилиты curl_init
CURLOPT_USERAGENTУстанавливает значение поля User-agent, переданное в HTTP-запросах
CURLOPT_USERPWDЗадает имя пользователя и его пароль, необходимый для соединения. При этом используется формат username:password
CURLOPT_VERBOSEПри значении TRUE Curl выводит сообщение о состоянии
CURLOPT_WRITEFUNCTIONЗадает имя функции, которая будет получать данные при указанном соединении. Эта функция принимает два аргумента: ресурс Curl и строку данных. Она возвращает количество обработанных байтов данных. Если возвращаемое значение не соответствует количеству переданных данных, Curl сообщает об ошибке
CURLOPT_WRITEHEADERЗадает открытый файловый поток, который будет получать заголовки. Значением option задается ресурс, возвращаемый функцией fopen

Устанавливает параметр для сеанса CURL

CURLOPT_CAINFO Имя файла, содержащего один или более сертификатов, с которыми
будут сверяться узлы. Этот параметр имеет смысл только при
использовании совместно с CURLOPT_SSL_VERIFYPEER.
Может потребоваться абсолютный путь.
CURLOPT_CAPATH Директория, содержащая несколько CA сертификатов.
Используйте этот параметр совместно с
CURLOPT_SSL_VERIFYPEER.
CURLOPT_COOKIE Содержимое заголовка «Cookie: «,
используемого в HTTP-запросе.
Обратите внимание, что несколько cookies разделяются
точкой с запятой с последующим пробелом
(например, «fruit=apple; colour=red«)
CURLOPT_COOKIEFILE Имя файла, содержащего cookies. Данный файл должен быть
в формате Netscape или просто заголовками HTTP, записанными
в файл.
Если в качестве имени файла передана пустая строка, то cookies
сохраняться не будут, но их обработка все еще будет включена.
CURLOPT_COOKIEJAR Имя файла, в котором будут сохранены все внутренние cookies
текущей передачи после закрытия дескриптора, например,
после вызова curl_close.
CURLOPT_CUSTOMREQUEST

Собственный метод запроса, используемый вместо
«GET» или «HEAD»
при выполнении HTTP-запроса. Это полезно при запросах
«DELETE» или других, более редких HTTP-запросах.
Корректными значениями будут слова наподобие «GET»,
«POST», «CONNECT» и так далее;
т.е. не вводите здесь всю строку с HTTP-запросом. Например,
указание «GET /index.html HTTP/1.0\r\n\r\n»
будет неправильным.

Замечание:

Не используйте эту возможность пока не убедитесь, что
сервер поддерживает данный тип запроса.

CURLOPT_DEFAULT_PROTOCOL

Протокол по умолчанию, если он отсутствует в схеме URL.

Добавлено в cURL 7.45.0. Доступно с PHP 7.0.7.
CURLOPT_DNS_INTERFACE

Устанавливает имя сетевого интерфейса, к которому привязан DNS.
Это должно быть имя интерфейса, а не адрес.

Добавлено в cURL 7.33.0. Доступно с PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP4

Установить локальный IPv4 адрес, по которому доступне DNS.
Адрес должен быть представлен в виде строки, содержащий одно число.

Добавлено в cURL 7.33.0. Доступно с PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP6

Установить локальный IPv6 адрес, по которому доступне DNS.
Адрес должен быть представлен в виде строки, содержащий одно число.

Добавлено в cURL 7.33.0. Доступно с PHP 7.0.7.
CURLOPT_EGDSOCKET Наподобие CURLOPT_RANDOM_FILE, за исключением
того, что имя файла устанавливается в сокет Entropy
Gathering Daemon.
CURLOPT_ENCODING Содержимое заголовка «Accept-Encoding: «.
Это позволяет декодировать запрос. Поддерживаемыми
кодировками являются «identity»,
«deflate» и «gzip».
Если передана пустая строка, «»,
посылается заголовок, содержащий все поддерживаемые
типы кодировок.
Добавлен в версии cURL 7.10.
CURLOPT_FTPPORT Значение, которое будет использоваться для определения
IP-адреса для команды «PORT» FTP-протокола. Команда «PORT»
сообщает серверу, с каким IP-адресом он должен устанавливать
соединение. Это может быть IP-адрес, имя хоста, имя сетевого
интерфейса (под Unix), или просто ‘-‘ для использования системного
IP-адреса по умолчанию.
CURLOPT_INTERFACE Имя используемого сетевого интерфейса. Может быть
именем интерфейса, IP адресом или именем хоста.
CURLOPT_KEYPASSWD Пароль, который требуется для использования приватного ключа CURLOPT_SSLKEY
или CURLOPT_SSH_PRIVATE_KEYFILE.
Добавлено в cURL 7.16.1.
CURLOPT_KRB4LEVEL Уровень безопасности KRB4 (Kerberos 4). Любое из следующих
значений (в порядке от слабого к самому сильному) корректно:
«clear»,
«safe»,
«confidential»,
«private»..
Если указанная строка отличается от данных значений,
будет использовано значение «private».
Установка этого параметра в NULL полностью отключит
безопасность KRB4. На данный момент безопасность KRB4
работает только с FTP транзакциями.
CURLOPT_LOGIN_OPTIONS Используется для установки специфичных для протокола настроек логина,
таких как предпочитаемый механизм аутентификации «AUTH=NTLM» или «AUTH=*»,
и должна использоваться совместно с CURLOPT_USERNAME.
Добавлено в cURL 7.34.0. Доступно с PHP 7.0.7.
CURLOPT_PINNEDPUBLICKEY Устанавливает
Устанавливает зафиксированный публичный ключ.
Строка должны содержать имя файла, в котором лежит ваш зафиксированный
публичный ключ. Ожидается формат файла «PEM» или «DEX».
Строка также может быть числом в формате base64, закодированным sha256 с
префиксом «sha256//» и разделенная точкой с запятой «;».
Добавлено в cURL 7.39.0. Доступно с PHP 7.0.7.
CURLOPT_POSTFIELDS

Все данные, передаваемые в HTTP POST-запросе.
Для передачи файла, укажите перед именем файла @, а
также используйте полный путь к файлу. Тип файла также может
быть указан с помощью формата ‘;type=mimetype‘,
следующим за именем файла. Этот параметр может быть передан
как в качестве url-закодированной строки, наподобие
para1=val1&para2=val2&…‘, так и
в виде массива, ключами которого будут имена полей, а значениями
— их содержимое.
Если value является массивом,
заголовок Content-Type будет установлен в
значение multipart/form-data.

Начиная с версии PHP 5.2.0, при передаче файлов с префиксом
@, value должен быть
массивом.

С версии PHP 5.5.0, префикс @ устарел и
файлы можно отправлять с помощью CURLFile.
Префикс @ можно отключить, чтобы можно
было передавать значения, начинающиеся с @,
задав опцию CURLOPT_SAFE_UPLOAD в значение TRUE.

CURLOPT_PRIVATE Любые данные, которые должны ассоциироваться с этим дескриптором cURL.
Эти данные могут быть выбраны подзапросом опции
CURLINFO_PRIVATE функции
curl_getinfo(). cURL ничего не делает с этими данными.
Если используется множество дескрипторов cURL, эти данные обычно используются
как уникальный ключ для определения дескриптора cURL.
Добавлено в cURL 7.10.3.
CURLOPT_PROXY HTTP-прокси, через который будут направляться запросы.
CURLOPT_PROXY_SERVICE_NAME Имя сервиса аутентификации прокси. Добавлено в cURL 7.34.0. Доступно с PHP 7.0.7.
CURLOPT_PROXYUSERPWD Логин и пароль, записанные в виде
«[username]:[password]», используемые при
соединении через прокси.
CURLOPT_RANDOM_FILE Имя файла, используемого для инициализации генератора
случайных чисел для SSL.
CURLOPT_RANGE Диапазон данных, которые нужно загрузить, в формате
«X-Y», причем либо X, либо Y могут быть
опущены. Протокол HTTP также поддерживает передачу
нескольких диапазонов, разделенных запятыми, они задаются
в формате «X-Y,N-M».
CURLOPT_REFERER Содержимое заголовка «Referer: «, который будет
использован в HTTP-запросе.
CURLOPT_SERVICE_NAME Имя сервиса аутентификации. Добавлено в cURL 7.43.0. доступно с PHP 7.0.7.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 Строка, содержащая 32 шестнадцатеричных цифры. Строка должна являться
контрольной суммой по алгоритму MD5 публичного ключа удаленного компьютера и libcurl будет сбрасывать
соединение к удаленному хосту до тех пор, пока контрольная сумма не будет соответствовать публичному ключу.
Эта опция предназначена только для передачи данных с помощью SCP и SFTP.
Добавлено в cURL 7.17.1.
CURLOPT_SSH_PUBLIC_KEYFILE Имя файла для вашего публичного ключа. Если не задано, то libcurl использует по
умолчанию файл $HOME/.ssh/id_dsa.pub, если переменная окружения HOME установлена и
файл «id_dsa.pub» в текущей директории, если переменная HOME не установлена.
Добавлено в cURL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE Имя файла для вашего приватного ключа. Если не задано, то libcurl использует по
умолчанию файл $HOME/.ssh/id_dsa, если переменная окружения HOME установлена и
файл «id_dsa» в текущей директории, если переменная HOME не установлена.
Если файл защищен паролем, установите пароль с помощью
CURLOPT_KEYPASSWD.
Добавлено в cURL 7.16.1.
CURLOPT_SSL_CIPHER_LIST Список шифров, используемый в SSL-передачах. Например,
RC4-SHA и TLSv1 являются
корректными списками шифров.
CURLOPT_SSLCERT Имя файла с корректно отформатированным PEM-сертификатом.
CURLOPT_SSLCERTPASSWD Пароль, необходимый для использования сертификата
CURLOPT_SSLCERT.
CURLOPT_SSLCERTTYPE Формат сертификата. Поддерживаются форматы
«PEM» (по умолчанию), «DER»
и «ENG».
Добавлен в версии cURL 7.9.3.
CURLOPT_SSLENGINE Идентификатор механизма шифрования для закрытого ключа SSL,
указанного в параметре CURLOPT_SSLKEY.
CURLOPT_SSLENGINE_DEFAULT Идентификатор механизма шифрования, используемого для
ассиметричных операций шифрования.
CURLOPT_SSLKEY Имя файла с закрытым ключом SSL.
CURLOPT_SSLKEYPASSWD

Тайный пароль, необходимый для использования закрытого
ключа SSL, указанного параметром
CURLOPT_SSLKEY.

Замечание:

Так как этот параметр содержит ценный пароль, помните,
что данный PHP-скрипт нужно хранить в безопасном месте.

CURLOPT_SSLKEYTYPE Тип закрытого ключа SSL, указанного в параметре
CURLOPT_SSLKEY. Поддерживаются следующие
типы ключей:
«PEM» (по умолчанию), «DER»
и «ENG».
CURLOPT_UNIX_SOCKET_PATH Разрешает использовать доменные сокеты UNIX в качестве конечной точки для
соединения и устанавливает путь к ним равным заданной строке (string).
Добавлено в cURL 7.40.0. Доступно с PHP 7.0.7.
CURLOPT_URL Загружаемый URL. Данный параметр может быть также установлен
при инициализации сеанса с помощью curl_init().
CURLOPT_USERAGENT Содержимое заголовка «User-Agent: «, посылаемого
в HTTP-запросе.
CURLOPT_USERNAME Ипя пользователя для аутентификации. Добавлено в cURL 7.19.1. Доступно с PHP 5.5.0.
CURLOPT_USERPWD Логин и пароль, используемые при соединении,
указанные в формате
«[username]:[password]».
CURLOPT_XOAUTh3_BEARER Задает токен доступа OAuth 2.0. Добавлено в cURL 7.33.0. Доступно с PHP 7.0.7.

Как пользоваться curl | Losst

Нам часто приходится загружать различные файлы из интернета, например, исполняемые файлы программ, файлы скриптов, архивы с исходниками. Но не всегда это нужно делать через браузер. Во многих ситуациях гораздо проще выполнить все действия через терминал. Поскольку таким образом вы можете автоматизировать процесс. С другой стороны, веб-мастерам время от времени приходится тестировать доступность веб-сайтов, проверять отправляемые и получаемые заголовки и многое другое.

Для решения таких задач и задач подобного круга можно воспользоваться утилитой curl. Она позволяет решить намного более широкий круг задач, среди которых даже имитация действий пользователя на сайте. В этой статье мы рассмотрим как пользоваться curl, что это такое и зачем нужна эта программа.

Содержание статьи:

Что такое curl?

На самом деле, curl — это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.

Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl — это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.

Команда curl

Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:

$ curl опции ссылка

Теперь рассмотрим основные опции:

  • -# — отображать простой прогресс-бар во время загрузки;
  • -0 — использовать протокол http 1.0;
  • -1 — использовать протокол шифрования tlsv1;
  • -2 — использовать sslv2;
  • -3 — использовать sslv3;
  • -4 — использовать ipv4;
  • -6 — использовать ipv6;
  • -A — указать свой USER_AGENT;
  • -b — сохранить Cookie в файл;
  • -c — отправить Cookie на сервер из файла;
  • -C — продолжить загрузку файла с места разрыва или указанного смещения;
  • -m — максимальное время ожидания ответа от сервера;
  • -d — отправить данные методом POST;
  • -D — сохранить заголовки, возвращенные сервером в файл;
  • -e — задать поле Referer-uri, указывает с какого сайта пришел пользователь;
  • -E — использовать внешний сертификат SSL;
  • -f — не выводить сообщения об ошибках;
  • -F — отправить данные в виде формы;
  • -G — если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
  • -H — передать заголовки на сервер;
  • -I — получать только HTTP заголовок, а все содержимое страницы игнорировать;
  • -j — прочитать и отправить cookie из файла;
  • -J — удалить заголовок из запроса;
  • -L — принимать и обрабатывать перенаправления;
  • -s — максимальное количество перенаправлений с помощью Location;
  • -o — выводить контент страницы в файл;
  • -O — сохранять контент в файл с именем страницы или файла на сервере;
  • -p — использовать прокси;
  • —proto — указать протокол, который нужно использовать;
  • -R —  сохранять время последнего изменения удаленного файла;
  • -s — выводить минимум информации об ошибках;
  • -S — выводить сообщения об ошибках;
  • -T — загрузить файл на сервер;
  • -v — максимально подробный вывод;
  • -y — минимальная скорость загрузки;
  • -Y — максимальная скорость загрузки;
  • -z — скачать файл, только если он был модифицирован позже указанного времени;
  • -V — вывести версию.

Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.

Как пользоваться curl?

Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.

Загрузка файлов

Самая частая задача — это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:

curl https://raw.githubusercontent.com/curl/curl/master/README.md

Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md

Если загрузка была неожиданно прервана, вы можете ее возобновить:

curl -# -C - -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

 

Если нужно, одной командой можно скачать несколько файлов:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Еще одна вещь, которая может быть полезной администратору — это загрузка файла, только если он был изменен:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Данная команда скачает файл, только если он был изменен после 21 декабря 2017.

Ограничение скорости

Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:

curl --limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Передача файлов

Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:

curl -T login.txt ftp://speedtest.tele2.net/upload/

Или проверим отправку файла по HTTP, для этого существует специальный сервис:

curl -T ~/login.txt http://posttestserver.com/post.php

В ответе утилита сообщит где вы можете найти загруженный файл.

Отправка данных POST

Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:

curl -d "field1=val&fileld2=val1"http://posttestserver.com/post.php

Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:

curl -F "password=@pass;type=text/plain" http://posttestserver.com/post.php

Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.

Передача и прием куки

Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:

curl -c cookie.txt http://posttestserver.com/post.php

Затем можно отправить cookie curl обратно:

curl -b cookie.txt http://posttestserver.com/post.php

Передача и анализ заголовков

Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:

curl -I https://losst.ru

А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:

curl -I --header 'If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT' https://losst.ru

Аутентификация curl

Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

Точно так же будет выполняться аутентификация на серверах HTTP.

Использование прокси

Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:

curl -x proxysever.test.com:3128 http://google.co.in

Выводы

В этой статье мы рассмотрели как пользоваться curl, зачем нужна эта утилита и основные ее возможности. Несмотря на свою схожесть с wget, они очень сильно отличаются. Команда curl linux предназначена больше для анализа и имитации различных действий на сервере, тогда как wget больше подходит для загрузки файлов и краулинга сайтов.

Основы работы с API — Прием оплаты по API ЮKassa

ЮKassa — универсальное решение для работы с онлайн-платежами.
API ЮKassa построено на REST-принципах, работает с реальными объектами и обладает предсказуемым поведением.
С помощью этого API вы можете отправлять запросы на оплату, сохранять платежную информацию для повторных списаний, совершать возвраты и многое другое.

API в качестве основного протокола использует HTTP, а значит, подходит для разработки на любом языке программирования, который умеет работать с HTTP-библиотеками (cURL и другими).

API поддерживает POST и GET-запросы. POST-запросы используют JSON-аргументы,
GET-запросы работают со строками запросов. API всегда возвращает ответ в формате JSON, независимо от типа запроса.

Для аутентификации запросов необходимо использовать HTTP Basic Auth. В заголовках запросов в качестве имени пользователя необходимо передать идентификатор вашего магазина в ЮKassa, в качестве пароля — ваш секретный ключ (его нужно сгенерировать и активировать паролем из смс).

Пример запроса с аутентификацией

curl https://api.yookassa.ru/v3/payments/{payment_id} \
  -u <Идентификатор магазина>:<Секретный ключ>

Узнать идентификатор и выпустить секретный ключ (а также перевыпустить и удалить неактуальный) можно в личном кабинете ЮKassa, в разделе Интеграция — Ключи API.

Секретный ключ отвечает за безопасность ваших данных. Храните его в защищенном месте и не публикуйте на сторонних ресурсах (например, вместе с примерами кода).

Пример запроса с использованием OAuth-токена

curl https://api.yookassa.ru/v3/payments/{payment_id} \
  -H "Authorization: Bearer <OAuth-токен>"

OAuth-токен ЮKassa дает право выполнять финансовые операции от имени пользователя. Токен должен быть доступен только вашему приложению, поэтому не публикуйте его в открытых источниках и не сохраняйте в cookie браузера.

В контексте API идемпотентность означает,
что многократные запросы обрабатываются так же, как однократные.

Это значит, что получив повторный запрос с теми же параметрами, ЮKassa выдаст в ответе результат исходного запроса.

Такое поведение помогает избежать нежелательного повторения транзакций. Например, если при проведении платежа возникли проблемы с сетью, и соединение прервалось, вы сможете безопасно повторить нужный запрос неограниченное количество раз.

GET-запросы являются по умолчанию идемпотентными, так как не имеют нежелательных последствий.

Для обеспечения идемпотентности POST-запросов используется заголовок

Idempotence-Key

(или ключ идемпотентности).

Пример запроса с ключом идемпотентности

curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "2.00",
          "currency": "RUB"
        },
        "payment_id": "215d8da0-000f-50be-b000-0003308c89be"
      }'

Если вы повторяете запрос с теми же данными и тем же ключом, API обрабатывает его как повторный. Если данные в запросе те же, а ключ идемпотентности отличается, запрос выполняется как новый.

В заголовке

Idempotence-Key

можно передавать любое значение, уникальное для этой операции на вашей стороне. Мы рекомендуем использовать V4 UUID.

ЮKassa обеспечивает идемпотентность в течение 24 часов после первого запроса, потом повторный запрос будет обработан как новый.

ЮKassa обрабатывает полученный запрос немедленно и возвращает результат обработки («успех» или «неудача»).

Если в течение 30 секунд невозможно дать точный ответ, например из-за неполадок на стороне эквайера, ЮKassa вернет HTTP-код 500 и попытается отменить операцию.

Чтобы узнать окончательный результат обработки запроса, повторите запрос с теми же данными и с тем же ключом идемпотентности. Рекомендуемая частота повторений: один раз в минуту до тех пор, пока ЮKassa не сообщит ответ, отличный от HTTP 500.

Если запрос обработан успешно, API вернет HTTP-код 200 и тело ответа.

Если в процессе обработки произойдет ошибка, API вернет объект ошибки и стандартный HTTP-код.

HTTP-кодКод ошибкиОписание
400invalid_request, not_supportedНеправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API.
401invalid_credentials[Basic Auth] Неверный идентификатор вашего аккаунта в ЮKassa или секретный ключ (имя пользователя и пароль при аутентификации).
[OAuth 2.0] Невалидный OAuth-токен: он некорректный, устарел или его отозвали. Запросите токен заново.
403forbiddenСекретный ключ или OAuth-токен верный, но не хватает прав для совершения операции.
404not_foundРесурс не найден.
429too_many_requestsПревышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов.
500internal_server_errorТехнические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности. Рекомендуется повторять запрос с периодичностью один раз в минуту до тех пор, пока ЮKassa не сообщит результат обработки операции.

Пример тела ответа ошибки

  {
    "type": "error",
    "id": "ab5a11cd-13cc-4e33-af8b-75a74e18dd09",
    "code": "invalid_request",
    "description": "Idempotence key duplicated",
    "parameter": "Idempotence-Key"
  }

Неуспешные платежиТестированиеВходящие уведомленияБыстрый старт

Использование функций cURL в PHP — Linux Совет

cURL — это библиотека для передачи информации с использованием различных типов протоколов. Полная форма cURL — это Клиент для URL. Для cURL существует два типа библиотек. Одна библиотека — curl — это инструмент командной строки, который используется для отправки или получения файлов с помощью URL-адреса. HTTP, HTTPS, FTP, FTPS, TELNET, FILE, и т. Д. Протоколы поддерживаются curl . Другая библиотека — libcurl , представленная Дэниелом Стенбергом в 1997 году.Он используется для подключения и связи с разными типами серверов с использованием разных типов протоколов. Все протоколы curl также поддерживаются libcurl . Без этих протоколов libcurl поддерживает HTTP POST, HTTP PUT, сертификаты HTTPS, загрузку по FTP, загрузку на основе HTTP, туннелирование HTTP-прокси, аутентификацию и т. Д. В статье показано использование функций curl из библиотеки cURL с использованием PHP. сценарий.

PHP / cURL

Модуль PHP, который используется для доступа к функциям библиотеки libcurl , называется PHP / cURL .Вы должны проверить, включено это или нет в PHP, прежде чем тестировать примеры этого руководства. Вы можете выполнить функцию phpinfo () , чтобы проверить, включен ли этот модуль в PHP.

Если модуль не включен по умолчанию в PHP, выполните следующие команды, чтобы установить и включить php-curl в Ubuntu и перезапустить сервер Apache.

$ sudo apt install libapache2-mod-php php-curl
$ sudo service apache2 restart

Наиболее часто используемые функции curl

Название функции Назначение
curl_init () Он используется для инициализации сеанса cURL.
curl_exec () Используется для выполнения запущенного сеанса cURL.
curl_close () Используется для закрытия сеанса cURL.
curl_error () Используется для возврата последнего сообщения об ошибке текущего сеанса cURL.
curl_errno Используется для возврата номера последней ошибки текущего сеанса cURL.
curl_setopt () Используется для установки опции для передачи cURL.
curl_setopt_array () Он используется для установки нескольких опций для передачи cURL.
curl_reset () Используется для сброса всех параметров сеанса libcurl.
curl_pause () Используется для приостановки соединения.
curl_version () Используется для получения информации о версии cURL.

Пример 1: Получить информацию с любого URL-адреса

Создайте файл PHP со следующим сценарием для получения информации с определенного URL-адреса.Функция curl_init () используется здесь для инициализации сеанса cURL для определенного URL-адреса. Первая функция curl_setopt () используется для возврата содержимого страницы по заданному URL-адресу. 1 передается как значение третьего аргумента этой функции, чтобы вернуть содержимое страницы в виде строкового значения. Затем вторая функция curl_setopt () используется для исключения информации заголовка из вывода. Функция curl_exec () выполнит сеанс cURL и сохранит возвращаемое значение в переменной $ result, которая будет напечатана позже.

// Инициализируем сеанс cURL
$ ch = curl_init («https://linuxhint.com/»);

// Вернуть содержимое страницы
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);

// Удаляем информацию заголовка из вывода
curl_setopt ($ ch, CURLOPT_HEADER, 0);

// Выполнить сеанс cURL
$ result = curl_exec ($ ch);

// Распечатать возвращаемое значение веб-сайта
echo $ result;

// Закрываем сеанс cURL
curl_close ($ ch);

?>

Выход:

Следующий вывод появится после выполнения вышеуказанного сценария.«Https://linuxhint.com» указывается в скрипте как URL-адрес. Итак, содержание этого сайта отображается.

Пример 2: Записать вывод cURL в файл

В предыдущем примере вывод скрипта показан в браузере. Но вы можете сохранить возвращаемое значение любого URL-адреса в файле также с помощью cURL. Создайте файл PHP со следующим сценарием, чтобы получить URL-адрес с помощью HTML-формы и инициализировать сеанс cURL для этого URL-адреса и сохранить содержимое страницы в текстовом файле, а не отображать его в браузере. CURLOPT_FILE Параметр используется в функции curl_setopt () для сохранения вывода после выполнения сеанса cURL в файл output.txt . Если форма отправляет неверный URL-адрес, информация об ошибке будет записана в файл вместо содержимого страницы.



Пример cURL

Введите URL-адрес



// Проверяем, нажата ли кнопка отправки или нет
if (isset ($ _ GET [‘url’]))
{
// Проверяем URL пуст или нет
if ($ _ GET [‘url’]! = «»)
{
// Установить значение URL
$ url = $ _GET [‘url’];

// Инициализируем сеанс cURL
$ ch = curl_init ($ url);

// Обработчик открытия файла для записи в текстовый файл
$ fh = fopen («output.txt «,» w «);

// Установить опцию для записи вывода в файл aa
curl_setopt ($ ch, CURLOPT_FILE, $ fh);

// Включить информацию заголовка в файл
curl_setopt ($ ch, CURLOPT_HEADER , 1);

// Выполнить сеанс cURL
curl_exec ($ ch);

// Проверить наличие ошибок cURL
if (curl_error ($ ch)) {
$ error = curl_errno ($ ch) ». : «. curl_error ($ ch);
fwrite ($ fh, $ error);
}

echo» Вывод сеанса cURL был записан в вывод.txt
file «;

// Закройте сеанс cURL
curl_close ($ ch);
// Закройте файл
fclose ($ fh);
}
else
{
echo» URL-адрес не указан набор. «;
}
}

?>

Выход:

После запуска скрипта появится следующая форма. Здесь действительный URL-адрес указан как URL-адрес.

Следующий вывод появится после нажатия кнопки отправки.

Пример 3: Установить опцию cURL с использованием массива

Если вы хотите установить несколько параметров cURL во время выполнения сеанса cURL, вы должны использовать функцию curl_setopt_array (). Чтобы узнать об использовании этой функции, создайте файл PHP со следующим сценарием. Две опции cURL устанавливаются с помощью переменной массива, и эта переменная передается как переменная опции функции curl_setopt_array () .

// Определить массив опций
$ defaults = array (
CURLOPT_URL => ‘http: // example.com / ‘,
CURLOPT_POST => true
);

// Инициализируем сеанс cURL
$ ch = curl_init ();

// Возвращаем содержимое страницы на основе массива опций
curl_setopt_array ($ ch, $ defaults);

// Распечатать возвращаемое значение
echo curl_exec ($ ch);

?>

Выход:

После запуска сценария появится следующий вывод. «Http://example.com» указывается в скрипте как URL-адрес.

Заключение

Простое использование cURL в PHP показано в этом руководстве на различных примерах.В PHP существует множество встроенных функций cURL для выполнения различных типов задач. Это руководство поможет читателям узнать об основных способах использования cURL в PHP.

Как добавить заголовок к запросу cURL?

PHP-код для примера Curl Add Header

Этот фрагмент PHP-кода был автоматически сгенерирован для примера Curl Add Header.
<< Вернуться к примеру заголовка добавления Curl

Что такое cURL?

cURL (расшифровывается как Client URL) — популярный инструмент командной строки, который можно использовать для передачи данных на / с сервера с использованием ряда сетевых протоколов, включая HTTP, HTTPS и FTP.Разработчики могут использовать библиотеку проекта cURL (libcurl) для выполнения HTTP-запросов непосредственно из своих приложений.

Могу ли я отправлять собственные заголовки HTTP с помощью cURL?

Да, вы можете добавить любой настраиваемый HTTP-заголовок в свой запрос cURL с помощью параметра командной строки -H и отправить его на сервер. Обратите внимание, что до 2011 г. рекомендуется называть настраиваемые заголовки HTTP с префиксом X-, чтобы подчеркнуть, что это нестандартный заголовок HTTP. Однако эта рекомендация была устарела в июне 2012 года, и в RFC 6648 теперь указывается, что создателям новых параметров заголовка НЕ ​​СЛЕДУЕТ ставить перед именами параметров префиксы «X-» или аналогичные префиксы.

  -H "Accept: application / json"  

Могу ли я отправлять заголовки cURL с запросом HTTP POST?

Да, вы можете отправить любое количество дополнительных заголовков HTTP с запросом POST. Например, при отправке JSON на сервер вы можете указать тип данных в теле запроса, используя заголовок Content-Type: application / json, и сообщить серверу, что клиент cURL ожидает JSON, используя Accept: application / json «. Если вы не передадите эти дополнительные заголовки с запросом cURL POST, сервер может неверно интерпретировать данные запроса или вернуть ответ в другом формате.

Могу ли я получать только заголовки HTTP с помощью cURL?

Да, параметр командной строки -I или —head cURL позволяет получать заголовки HTTP только с сервера, отправляя запрос HEAD. Метод запроса HTTP HEAD идентичен методу GET, за исключением того, что сервер не возвращает тело сообщения HTTP.

  curl -I https://reqbin.com/echo  

Пример настраиваемых заголовков cURL

Пример отправки данных JSON на сервер с дополнительными заголовками HTTP Accept и Content-Type.

Пример заголовков cURL

  curl -X POST https://reqbin.com/echo/post/json
   -H «Принять: приложение / json»
   -H "Content-Type: application / json"
   -d "{\" логин \ ": \" my_login \ ", \" пароль \ ": \" my_password \ "}"
  

PHP / cURL

Когда разработчики говорят cUrl в PHP или libcurl в PHP, возникают некоторые недопонимания. Но в большинстве случаев они имеют в виду PHP / CURL.

В этом руководстве мы сначала узнаем, что такое cUrl, libcurl и PHP / CURL, потому что мы хотим, чтобы все знали о различиях в этих трех концепциях.Затем мы перейдем к завершению задачи с помощью PHP / cURL.

Задача, которую мы выполним в конце этого руководства, — получить содержимое страницы Google, передав поисковый запрос «curl». И мы также предоставим некоторую справочную информацию о том, как вы можете расширить это руководство, чтобы продолжить.

Мы опубликовали следующий учебник на сайте From PHP / cURL to Guzzle.

Содержание


  1. Введение
  2. Завершите цель
  3. Подробнее
  4. Конец

Содержимое


1.Введение

Во-первых, давайте разберемся с концепциями curl, libcurl и PHP / cURL.

  1. curl : инструмент командной строки для получения или отправки файлов с использованием синтаксиса URL.
  2. libcurl : библиотека, созданная Даниэлем Стенбергом, которая позволяет вам подключаться и взаимодействовать с множеством различных типов серверов с множеством различных типов протоколов. libcurl в настоящее время поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap.libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это также можно сделать с помощью расширения ftp PHP), загрузку на основе формы HTTP, прокси, файлы cookie и аутентификацию пользователя + пароль.
  3. PHP / cURL : Модуль для PHP, позволяющий программам PHP использовать libcurl.

Теперь у вас есть представление о различных терминах.

Что касается «PHP / cURL», большинство разработчиков также относят его к «curl в PHP», «curl с PHP» и так далее.В этом руководстве мы будем называть его «curl в PHP», чтобы следовать общепринятому термину.

Цель задачи в этом руководстве — использовать curl в PHP для получения данных из Google, а поисковый запрос, который будет отправлен в Google, — «curl».

Приступим к задаче!

2.Завершить гол

Использовать curl в PHP очень просто. Основная идея использования curl в PHP:

  1. Инициализировать сеанс curl
  2. Установить различные параметры для сеанса
  3. Выполнение и выборка / отправка данных с / на сервер
  4. Закройте сеанс

Для достижения нашей цели код прост, как

  • step1 : Инициализировать сеанс curl с помощью curl_init ().
  • шаг2 :
    Установите параметр для CURLOPT_URL. Это значение является URL-адресом, на который мы отправляем запрос. Добавьте поисковый запрос «curl» с помощью параметра «q =».

    Установите параметр для CURLOPT_RETURNTRANSFER, true укажет curl, чтобы он возвращал строку, а не печатал ее.

    Установите параметр для CURLOPT_HEADER, false укажет curl игнорировать заголовок в возвращаемом значении.

  • step3 : выполнить сеанс curl с помощью curl_exec ().
  • step4 : Закройте созданный нами сеанс curl.
  • step5 : вывести возвращаемую строку.
3.Более

Очевидно, что с помощью curl в PHP можно выполнять больше задач, это руководство — почти самый простой способ его использования. Однако вы можете расширить его, чтобы выполнять больше задач, таких как
аутентификация в защищенной паролем учетной записи и получение данных оттуда.

Области, которые могут потребоваться для выполнения более сложных задач, перечислены ниже:

  1. curl_error () : Для более продвинутой системы вы всегда должны использовать curl_error () для проверки ошибок на основе возвращаемого значения (bool) curl_exec ().
  2. curl_setopt () :
    Есть большое количество вариантов. Взгляните на файл руководства. На этой странице есть четкое объяснение различных опций.
4. конец

Спасибо, что прочитали эту статью, и если вы столкнулись с чем-то другим, у вас есть другое решение или вы считаете, что наше решение неверно, сообщите нам об этом в разделе комментариев.

Мы будем очень рады это услышать.

Если вам нравится наш учебник, подпишитесь на нас в Twitter и помогите распространить информацию.Нам нужна ваша поддержка, чтобы продолжить.

Как отправить запрос PHP cURL POST в Codeigniter

Если вы хотите узнать, как отправить или сделать запрос CURL POST в Codeigniter, то этот учебник завершит ваш учебный квест о PHP Curl POST в Codeigniter. Когда дело доходит до получения данных со сторонней конечной точки в Codeigniter, вы можете полагаться только на запрос CURL по любому другому методу.

Вы имеете дело с REST API или даже сторонними веб-службами? Не волнуйтесь, и вы можете использовать функции php curl для обработки запросов GET, POST, PUT, DELTE в Codeigniter с функциями PHP CURL.Это не только удобно, но и приятно для веб-разработчиков.

Пример запроса cURL PHP Codeigniter

В этом руководстве я покажу вам пример запроса PHP cURL, который также поможет вам справиться с заголовками при аутентификации. Мы можем воспользоваться помощью следующих функций PHP curl, чтобы получить ответ JSON через API:

  • curl_setopt () : этот метод устанавливает параметр для передачи cURL
  • curl_init () : инициализировать новый сеанс и вернуться дескриптор cURL для использования с функциями curl_setopt (), curl_exec () и curl_close ().
  • curl_exec () : рекомендуется вызывать этот метод после вызова сеанса cURL вместе с каждым установленным сеансом. option
   'Джон Доу',
            'email' => 'johndoe @ yahoo.com '
        ];
   
        
        curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ data);
            
        
        curl_setopt ($ curl, CURLOPT_HTTPHEADER, массив ('Content-Type: application / json'));
            
        
        curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, истина);
            
        
        $ result = curl_exec ($ curl);
             
        
        curl_close ($ curl);
    }
}  

Давайте посмотрим на пример cURL аутентификации заголовка:

   'Джон Доу',
            'email' => '[email protected]'
        ];
   
        
        curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ data);
            
        
        curl_setopt ($ curl, CURLOPT_HTTPHEADER, массив (
            'Content-Type: application / json',
            'Ключ приложения: JJEK8L4',
            'Секрет приложения: 2zqAzq6'
        ));
            
        
        curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, истина);
            
        
        $ result = curl_exec ($ curl);
             
        
        curl_close ($ curl);
    }
}  

Отправка электронной почты с помощью PHP и SendGrid — документация по SendGrid | SendGrid

Мы рекомендуем использовать SendGrid PHP, нашу клиентскую библиотеку, доступную на GitHub, с полной документацией.

Библиотека официально не поддерживает V2 API, но вы можете использовать V2 со старой версией библиотеки. Для получения дополнительной информации см. Продолжение использования V2 в PHP.

Использование библиотеки PHP SendGrid

  // с использованием библиотеки PHP SendGrid
// https://github.com/sendgrid/sendgrid-php
требуется 'vendor / autoload.php';
$ sendgrid = новый SendGrid ("SENDGRID_APIKEY");
$ email = новый SendGrid \ Email ();

$ email-> addTo ("[email protected]")
      -> setFrom ("you @ youremail.com ")
      -> setSubject («Отправка с помощью SendGrid - это весело»)
      -> setHtml ("и легко делать где угодно, даже с PHP");

$ sendgrid-> отправить ($ email);  

Использование PHP с cURL

Если вы решите не использовать клиентскую библиотеку SendGrid, вы можете использовать функцию PHP cURL для запроса веб-API.

  ';
$ js = массив (
  'sub' => array (': name' => array ('Elmer')),
  'фильтры' => массив ('шаблоны' => массив ('настройки' => массив ('включить' => 1, 'template_id' => $ template_id)))
);

$ params = массив (
    'to' => "[email protected]",
    'toname' => «Пример пользователя»,
    'from' => "[email protected]",
    'fromname' => "Ваше имя",
    'subject' => «Тест PHP»,
    'text' => "Я пишу!",
    'html' => " Я HTML! ",
    'x-smtpapi' => json_encode ($ js),
  );

$ request = $ url.'api / mail.send.json';

// Генерируем запрос на завиток
$ session = curl_init ($ запрос);
// Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS)
curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt ($ session, CURLOPT_HTTPHEADER, array ('Авторизация: предъявитель'. $ sendgrid_apikey));
// Сообщаем curl использовать HTTP POST
curl_setopt ($ сеанс, CURLOPT_POST, истина);
// Сообщаем curl, что это тело POST
curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params);
// Сообщаем curl не возвращать заголовки, но возвращать ответ
curl_setopt ($ сеанс, CURLOPT_HEADER, ложь);
curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина);

// получаем ответ
$ response = curl_exec ($ сеанс);
curl_close ($ сеанс);

// распечатать все
print_r ($ ответ);

?>  

Электронное письмо, отправленное с использованием заголовка SMTPAPI

Этот пример продвигает предыдущий пример на шаг вперед, добавляя наш заголовок SMTPAPI для установки категории и отправки нескольким получателям.Категория называется test_category, и электронное письмо будет отправлено как на [email protected], так и на [email protected]. Обычный адрес, [email protected], не получит электронное письмо.

   массив (
    [email protected], [email protected]
  ),
  'category' => 'test_category'
);


$ params = массив (
    'api_user' => $ пользователь,
    'api_key' => $ проход,
    'x-smtpapi' => json_encode ($ json_string),
    'to' => 'example3 @ sendgrid.com ',
    'subject' => 'тестирование из curl',
    'html' => 'test body',
    'text' => 'Test body',
    'from' => '[email protected]',
  );


$ request = $ url.'api / mail.send.json ';

// Генерируем запрос на завиток
$ session = curl_init ($ запрос);
// Сообщаем curl использовать HTTP POST
curl_setopt ($ сеанс, CURLOPT_POST, истина);
// Сообщаем curl, что это тело POST
curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params);
// Сообщаем curl не возвращать заголовки, но возвращать ответ
curl_setopt ($ сеанс, CURLOPT_HEADER, ложь);
// Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS)
curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина);

// получаем ответ
$ response = curl_exec ($ сеанс);
curl_close ($ сеанс);

// распечатать все
print_r ($ ответ);

?>  

Электронное письмо с вложением файла

В этом примере добавляется дополнительный параметр вложения для прикрепления файла с именем myfile.В этом примере предполагается, что файл находится в том же каталоге, что и ваш код, в противном случае вам нужно указать полный путь к файлу в переменной $ filePath.

   $ пользователь,
    'api_key' => $ проход,
    'to' => '[email protected]',
    'subject' => 'проверка отправки файла',
    'html' => '

HTML

', 'text' => 'простой текст', 'from' => 'пример @ sendgrid.com ', 'files ['. $ fileName. ']' =>'@'.$filePath.'/'.$fileName. ); print_r ($ params); $ request = $ url.'api / mail.send.json '; // Генерируем запрос на завиток $ session = curl_init ($ запрос); // Сообщаем curl использовать HTTP POST curl_setopt ($ сеанс, CURLOPT_POST, истина); // Сообщаем curl, что это тело POST curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params); // Сообщаем curl не возвращать заголовки, но возвращать ответ curl_setopt ($ сеанс, CURLOPT_HEADER, ложь); // Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS) curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина); // получаем ответ $ response = curl_exec ($ сеанс); curl_close ($ сеанс); // распечатать все print_r ($ ответ); ?>

Одновременные HTTP-запросы в PHP с cURL / Stoyan phpied.com

Основная идея «мэшапа» в стиле Web 2.0 состоит в том, что вы потребляете данные из нескольких служб, часто от разных поставщиков, и объединяете их интересными способами. Это означает, что вам часто нужно выполнить более одного HTTP-запроса к службе или службам. В PHP, если вы используете что-то вроде file_get_contents (), это означает, что все запросы будут синхронными: новый запускается только после завершения предыдущего. Если вам нужно сделать три HTTP-запроса, и каждый вызов занимает секунду, ваше приложение задерживается как минимум на три секунды.

Решение

Конечно, улучшение состоит в том, чтобы как можно больше кэшировать ответы, но в тот или иной момент вам все равно придется делать эти запросы.

Используя семейство функций cURL curl_multi *, вы можете делать эти запросы одновременно. Таким образом, ваше приложение будет таким же медленным, как самый медленный запрос, а не суммой всех запросов. И это кое-что.

Функция

Вот небольшая функция, которую я закодировал, которая позволит вам выполнять множественные запросы.

  $ d) {
 
    $ кудрявый [$ id] = curl_init ();
 
    $ url = (is_array ($ d) &&! empty ($ d ['url']))? $ d ['url']: $ d;
    curl_setopt ($ curly [$ id], CURLOPT_URL, $ url);
    curl_setopt ($ curly [$ id], CURLOPT_HEADER, 0);
    curl_setopt ($ curly [$ id], CURLOPT_RETURNTRANSFER, 1);
 
    
    if (is_array ($ d)) {
      if (! empty ($ d ['post'])) {
        curl_setopt ($ curly [$ id], CURLOPT_POST, 1);
        curl_setopt ($ curly [$ id], CURLOPT_POSTFIELDS, $ d ['сообщение']);
      }
    }
 
    
    if (! empty ($ options)) {
      curl_setopt_array ($ curly [$ id], $ options);
    }
 
    curl_multi_add_handle ($ mh, $ curly [$ id]);
  }
 
  
  $ running = null;
  делать {
    curl_multi_exec ($ mh, $ работает);
  } while ($ running> 0);
 
 
  
  foreach ($ curly as $ id => $ c) {
    $ result [$ id] = curl_multi_getcontent ($ c);
    curl_multi_remove_handle ($ mh, $ c);
  }
 
  
  curl_multi_close ($ mh);
 
  вернуть результат $;
}
 
?> 

Потребление

Функция принимает массив URL-адресов для обращения и, необязательно, массив параметров cURL, если вам нужно их передать.Первый массив может быть простым индексированным массивом или URL-адресами, или это может быть массив массивов, где второй имеет ключ с именем «url» . Если вы используете второй способ и у вас также есть ключ с именем «post» , функция выполнит почтовый запрос.

Функция возвращает массив ответов в виде строк. Ключи в массиве результатов соответствуют ключам во входных данных.

Пример GET

Предположим, вы хотите использовать некоторые поисковые веб-службы Yahoo (обратитесь в YDN) для создания гибридного приложения типа музыкального исполнителя band-o-pedia.Вот как вы можете искать аудио, видео и изображения одновременно:

 ';
print_r ($ г);
 
?> 

Это напечатает что-то вроде:

 Массив
(
    [0] => {"ResultSet": {"totalResultsAvailable": "633", "totalResultsReturned" :...
    [1] => {"ResultSet": {"totalResultsAvailable": "105342", "totalResultsReturned": ...
    [2] => {"ResultSet": {"totalResultsAvailable": 10, "totalResultsReturned": ...
) 

Пример сообщения POST

Есть интересная поисковая служба Yahoo, называемая извлечением терминов, которая анализирует контент. Он принимает запросы POST. Вот как использовать эту службу с помощью функции выше, выполняя два одновременных запроса:

  

И результат:

Множество
(
    [0] => a: 1: {s: 9: "ResultSet"; a: 1: {s: 6: "Result"; s: 5: "sleep";}}
    [1] => a: 1: {s: 9: "ResultSet"; a: 1: {s: 6: "Результат"; a: 3: {i: 0; s: 5: "урод"; i: 1; s: 5: "сон"; i: 2; s: 4: "фанк";}}}
)
 

Расскажите своим друзьям об этом посте на
Facebook и
Твиттер

Извините, комментарии отключены и скрыты из-за чрезмерного количества спама.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *