Zacznijmy najpierw od rozszyfrowania skrótu cURL, jest to skrót od Client URL (URL klienta). Funkcje cURL pozwalają na tworzenie połączeń przez FTP, HTTP, HTTPS, Gopher, Telnet, DICT, FILE i LDAP.
Można również stosować certyfikaty HTTPS, wysyłać parametry HTTP POST i GET, przesyłać pliki przez HTTP i FTP, pracować z serwerami proxy, ustawiać Cookiem i wykonywać proste uwierzytelnianie użytkownika poprzez HTTP. Za pomocą cURL możemy wykonać praktycznie każde połączenie sieciowe. Aby korzystać z funkcji cURL należy w pliku php.ini usunąć średnik przed extension=php_curl.dll w przypadku Windows. Aby korzystać z możliwości jakie daje nam biblioteka cURL, należy zapamiętać bardzo prosty schemat, składający się z kilku prostych funkcji. Na początku należy przyporządkować danej zmiennej identyfikator sesji cURL, służy do tego bezargumentowa funkcja curl_init(). Następnie należy ustawić dowolne parametry sesji, można tego dokonać za pomocą funkcji curl_setopt(). Ogólny prototyp tej funkcji wygląda następująco:
bool curl_setopt (resource identyfikator_sesji_cURL, string parametr, mixed wartość)
Listę wszystkich parametrów można znaleźć na http://pl.php.net/manual/pl/function.curl-setopt.php. Kiedy wszystkie parametry są ustawione, należy wykonać naszą sesję poleceniem curl_exec(). Funkcja ta jako parametr pobiera identyfikator sesji cURL. Po wykonaniu operacji trzeba zakończyć naszą sesję za pomocą curl_close(), która także pobiera identyfikator sesji cURL. Jedyną rzeczą jaka zmienia się zależnie od skryptu PHP jest lista parametrów oraz URL, z którym wykonywane jest połączenie.
Typowe zastosowania cURL to:
- Pobieranie stron z serwera stosującego HTTPS (fopen() nie może być w tym celu używa)
- Łączenie się ze skryptem spodziewającym się danych przesłanych metodą POST
- Tworzenie skryptu wysyłającego próbne dane do własnych skryptów i sprawdzanie wyników.
Pierwsze dwa zastosowania pokaże na przykładzie, trzecie zastosowanie możecie zobaczyć podczas różnych transakcji internetowych np. za pomocą PayU. Przykładowy skrypt takiej transakcji możecie zobaczyć pod tym adresem http://www.payu.pl/help.php?g=5&p=512.
Pobieranie stron z serwera stosującego HTTPS
Najpierw przedstawię co zrobimy w tym przykładzie. Na początku otworzymy plik w trybie „do zapisu”, w którym zostaną zapisane dane pobrane za pomocą cURL. Kolejnym etapem jest zadeklarowanie sesji połączenia. Następnie za pomocą parametru CURLOPT_URL deklarujemy adres z jakim nasz skrypt się połączy. W drugim parametrze definiujemy gdzie cURL ma zapisać pobrane dane. Następuje wykonanie i zamknięcie sesji, a później pliku.
<?php $file = fopen(“plik_do_zapisu.txt”, “w”); $c = curl_init(); curl_setopt($c, CURLOPT_URL, “https://serwerhttps.pl”); curl_setopt($c, CURLOPT_FILE, $file); curl_exec($c); curl_close($c); fclose($file); |
Przesyłanie danych metodą POST
Skrypt jest podobny do poprzedniego, tak jak wspomniałem wcześniej różni się tylko parametrami. Na początku inicjujemy sesję cURL, ustawiamy adres skryptu PHP, z którym chcemy się połączyć. Następnie za pomocą parametru CURLOPT_POST ustawionego na jeden, definiujemy, że będą wysyłane dane metodą POST. Kolejnym etapem jest wysłanie danych do skryptu służy do tego parametr CURLOPT_POSTFIELDS, który oczekuje stringa w formacie:
imie=alfred&nazwisko=kowalski&login=1&nazwa_zmiennej=wartość_zmiennej
Następuje wykonanie sesji oraz jej zamknięcie. Wynik wykonania zostaje przesłany do przeglądarki
<?php $c = curl_init(); curl_setopt($c, CURLOPT_URL, “http://serwer.pl/katalog/zamowienie.php”); curl_setopt($c, CURL_POST, 1); curl_setopt($c, CURLOPT_POSTFIELDS, “nazwisko=ok&miasto=ok”); curl_exec($c); curl_close($c); |
Pokazałem znikomą część możliwości jakie niesie za sobą biblioteka cURL. Zainteresowanych odsyłam do manuala, niestety dalej w języku angielskim.