CURL, Client URL Library Functions
Úvod
PHP podporuje libcurl, knižnicu vytvorenú Danielom Stenbergom, ktorá vám umožňuje spojenie a komunikáciu s mnohými rôznymi typmi serverov s mnohými rozličnými typmi protokolov. Aktuálne libcurl podporuje protokoly http, https, ftp, gopher, telnet, dict, file a ldap. libcurl tiež podporuje HTTPS certifikáty, HTTP POST, HTTP PUT, FTP uploadovanie (toto sa taktiež v PHP dá urobiť cez ftp rozšírenie), HTTP uploadovanie založené na formulári, proxies, cookies a autentifikáciu užívateľ+heslo.
Tieto funkcie boli pridané v PHP 4.0.2.
Požiadavky
Aby ste mohli CURL funkcie používať, musíte si naištalovať » CURL balíček. PHP vyžaduje použitie CURL 7.0.2-beta alebo vyššie. PHP nebude fungovať s nižšou verziou CURL než 7.0.2-beta. Od PHP verzie 4.2.3 budete potrebovať CURL verzie aspoň 7.9.0 alebo vyššiu.
Inštalácia
Aby ste v PHP mohli používať CURL podporu, musíte tiež PHP skompilovať s --with-curl[=DIR], kde DIR je umiestnenie adresára, ktorý obsahuje lib a zahrnuté adresáre. V adresári "include" by mala byť zložka s názvom "curl", ktorá by mala obsahovať súbory easy.h a curl.h. V adresári "lib" by mal byť umiestnený súbor s názvom libcurl.a. Počínajúc s PHP 4.3.0 môžete PHP nakonfigurovať tak, aby používal CURL pre url prúdy --with-curlwrappers.
Note: Poznámka pre užívateľov Win32 Aby ste tento modul aktivovali v prostredí Windows, musíte skopírovať libeay32.dll a ssleay32.dll z DLL zložky binárneho balíčka PHP/Win32 do zložky SYSTEM32 na vašom počítači s windowsom. (C:\WINNT\SYSTEM32 alebo C:\WINDOWS\SYSTEM32)
Preddefinované Konštanty
Konštanty uvedené nižšie sú definované týmto rozšírením a budú dostupné iba keď rozšírenie bolo buď kompilované do PHP alebo dynamicky načítané za behu (runtime).
- CURLOPT_PORT (integer)
- CURLOPT_FILE (integer)
- CURLOPT_INFILE (integer)
- CURLOPT_INFILESIZE (integer)
- CURLOPT_URL (integer)
- CURLOPT_PROXY (integer)
- CURLOPT_VERBOSE (integer)
- CURLOPT_HEADER (integer)
- CURLOPT_HTTPHEADER (integer)
- CURLOPT_NOPROGRESS (integer)
- CURLOPT_NOBODY (integer)
- CURLOPT_FAILONERROR (integer)
- CURLOPT_UPLOAD (integer)
- CURLOPT_POST (integer)
- CURLOPT_FTPLISTONLY (integer)
- CURLOPT_FTPAPPEND (integer)
- CURLOPT_NETRC (integer)
- CURLOPT_FOLLOWLOCATION (integer)
- CURLOPT_FTPASCII (integer)
- CURLOPT_PUT (integer)
- CURLOPT_MUTE (integer)
- CURLOPT_USERPWD (integer)
- CURLOPT_PROXYUSERPWD (integer)
- CURLOPT_RANGE (integer)
- CURLOPT_TIMEOUT (integer)
- CURLOPT_POSTFIELDS (integer)
- CURLOPT_REFERER (integer)
- CURLOPT_USERAGENT (integer)
- CURLOPT_FTPPORT (integer)
- CURLOPT_LOW_SPEED_LIMIT (integer)
- CURLOPT_LOW_SPEED_TIME (integer)
- CURLOPT_RESUME_FROM (integer)
- CURLOPT_COOKIE (integer)
- CURLOPT_SSLCERT (integer)
- CURLOPT_SSLCERTPASSWD (integer)
- CURLOPT_WRITEHEADER (integer)
- CURLOPT_SSL_VERIFYHOST (integer)
- CURLOPT_COOKIEFILE (integer)
- CURLOPT_SSLVERSION (integer)
- CURLOPT_TIMECONDITION (integer)
- CURLOPT_TIMEVALUE (integer)
- CURLOPT_CUSTOMREQUEST (integer)
- CURLOPT_STDERR (integer)
- CURLOPT_TRANSFERTEXT (integer)
- CURLOPT_RETURNTRANSFER (integer)
- CURLOPT_QUOTE (integer)
- CURLOPT_POSTQUOTE (integer)
- CURLOPT_INTERFACE (integer)
- CURLOPT_KRB4LEVEL (integer)
- CURLOPT_HTTPPROXYTUNNEL (integer)
- CURLOPT_FILETIME (integer)
- CURLOPT_WRITEFUNCTION (integer)
- CURLOPT_READFUNCTION (integer)
- CURLOPT_PASSWDFUNCTION (integer)
- CURLOPT_HEADERFUNCTION (integer)
- CURLOPT_MAXREDIRS (integer)
- CURLOPT_MAXCONNECTS (integer)
- CURLOPT_CLOSEPOLICY (integer)
- CURLOPT_FRESH_CONNECT (integer)
- CURLOPT_FORBID_REUSE (integer)
- CURLOPT_RANDOM_FILE (integer)
- CURLOPT_EGDSOCKET (integer)
- CURLOPT_CONNECTTIMEOUT (integer)
- CURLOPT_SSL_VERIFYPEER (integer)
- CURLOPT_CAINFO (integer)
- CURLOPT_COOKIEJAR (integer)
- CURLOPT_SSL_CIPHER_LIST (integer)
- CURLOPT_BINARYTRANSFER (integer)
- CURLCLOSEPOLICY_LEAST_RECENTLY_USED (integer)
- CURLCLOSEPOLICY_LEAST_TRAFFIC (integer)
- CURLCLOSEPOLICY_SLOWEST (integer)
- CURLCLOSEPOLICY_CALLBACK (integer)
- CURLCLOSEPOLICY_OLDEST (integer)
- CURLINFO_EFFECTIVE_URL (integer)
- CURLINFO_HTTP_CODE (integer)
- CURLINFO_HEADER_SIZE (integer)
- CURLINFO_REQUEST_SIZE (integer)
- CURLINFO_TOTAL_TIME (integer)
- CURLINFO_NAMELOOKUP_TIME (integer)
- CURLINFO_CONNECT_TIME (integer)
- CURLINFO_PRETRANSFER_TIME (integer)
- CURLINFO_SIZE_UPLOAD (integer)
- CURLINFO_SIZE_DOWNLOAD (integer)
- CURLINFO_SPEED_DOWNLOAD (integer)
- CURLINFO_SPEED_UPLOAD (integer)
- CURLINFO_FILETIME (integer)
- CURLINFO_SSL_VERIFYRESULT (integer)
- CURLINFO_CONTENT_LENGTH_DOWNLOAD (integer)
- CURLINFO_CONTENT_LENGTH_UPLOAD (integer)
- CURLE_OK (integer)
- CURLE_UNSUPPORTED_PROTOCOL (integer)
- CURLE_FAILED_INIT (integer)
- CURLE_URL_MALFORMAT (integer)
- CURLE_URL_MALFORMAT_USER (integer)
- CURLE_COULDNT_RESOLVE_PROXY (integer)
- CURLE_COULDNT_RESOLVE_HOST (integer)
- CURLE_COULDNT_CONNECT (integer)
- CURLE_FTP_WEIRD_SERVER_REPLY (integer)
- CURLE_FTP_ACCESS_DENIED (integer)
- CURLE_FTP_USER_PASSWORD_INCORRECT (integer)
- CURLE_FTP_WEIRD_PASS_REPLY (integer)
- CURLE_FTP_WEIRD_USER_REPLY (integer)
- CURLE_FTP_WEIRD_PASV_REPLY (integer)
- CURLE_FTP_WEIRD_227_FORMAT (integer)
- CURLE_FTP_CANT_GET_HOST (integer)
- CURLE_FTP_CANT_RECONNECT (integer)
- CURLE_FTP_COULDNT_SET_BINARY (integer)
- CURLE_PARTIAL_FILE (integer)
- CURLE_FTP_COULDNT_RETR_FILE (integer)
- CURLE_FTP_WRITE_ERROR (integer)
- CURLE_FTP_QUOTE_ERROR (integer)
- CURLE_HTTP_NOT_FOUND (integer)
- CURLE_WRITE_ERROR (integer)
- CURLE_MALFORMAT_USER (integer)
- CURLE_FTP_COULDNT_STOR_FILE (integer)
- CURLE_READ_ERROR (integer)
- CURLE_OUT_OF_MEMORY (integer)
- CURLE_OPERATION_TIMEOUTED (integer)
- CURLE_FTP_COULDNT_SET_ASCII (integer)
- CURLE_FTP_PORT_FAILED (integer)
- CURLE_FTP_COULDNT_USE_REST (integer)
- CURLE_FTP_COULDNT_GET_SIZE (integer)
- CURLE_HTTP_RANGE_ERROR (integer)
- CURLE_HTTP_POST_ERROR (integer)
- CURLE_SSL_CONNECT_ERROR (integer)
- CURLE_FTP_BAD_DOWNLOAD_RESUME (integer)
- CURLE_FILE_COULDNT_READ_FILE (integer)
- CURLE_LDAP_CANNOT_BIND (integer)
- CURLE_LDAP_SEARCH_FAILED (integer)
- CURLE_LIBRARY_NOT_FOUND (integer)
- CURLE_FUNCTION_NOT_FOUND (integer)
- CURLE_ABORTED_BY_CALLBACK (integer)
- CURLE_BAD_FUNCTION_ARGUMENT (integer)
- CURLE_BAD_CALLING_ORDER (integer)
- CURLE_HTTP_PORT_FAILED (integer)
- CURLE_BAD_PASSWORD_ENTERED (integer)
- CURLE_TOO_MANY_REDIRECTS (integer)
- CURLE_UNKNOWN_TELNET_OPTION (integer)
- CURLE_TELNET_OPTION_SYNTAX (integer)
- CURLE_OBSOLETE (integer)
- CURLE_SSL_PEER_CERTIFICATE (integer)
Príklady
Keď ste PHP skompilovali s podorou CURL, môžete začať používať CURL funckie. Základna myšlienka za CURL funkciami je, že inicializujete CURL sedenie pomocou curl_init(), potom možete nastaviť všetky vaše voľby pre prenos cez curl_setopt(), potom môžete sedenie uskutočniť s curl_exec() a potom vaše sedenie ukončiť pomocou curl_close(). Tu je príklad, ktorý používa CURL funkcie na stiahnutie domovskej stránky example.com do súboru:
Example#1 Použitie PHP modulu CURL na stiahnutie domovskej stránky example.com
<?php
$ch = curl_init ("https://www.example.com/");
$fp = fopen ("example_homepage.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
?>
Table of Contents
- curl_close — Zatvoriť CURL sedenie
- curl_copy_handle — Copy a cURL handle along with all of its preferences
- curl_errno — Vrátiť posledné číslo chyby
- curl_error — Vrátiť reťazec obsahujúci poslednú chybu pre aktuálne sedenie
- curl_exec — Vykonať CURL sedenie
- curl_getinfo — Získať informácie ohľadne špecifického prenosu
- curl_init — Inicializovať CURL sedenie
- curl_multi_add_handle — Add a normal cURL handle to a cURL multi handle
- curl_multi_close — Close a set of cURL handles
- curl_multi_exec — Run the sub-connections of the current cURL handle
- curl_multi_getcontent — Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set
- curl_multi_info_read — Get information about the current transfers
- curl_multi_init — Returns a new cURL multi handle
- curl_multi_remove_handle — Remove a multi handle from a set of cURL handles
- curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
- curl_setopt_array — Set multiple options for a cURL transfer
- curl_setopt — Nastaviť voľbu pre CURL prenos
- curl_version — Vrátiť aktuálnu CURL verziu