Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

cURL cz. 1: Podstawy i protokół HTTP

Ciastka

Są one jednym z ważniejszych elementów specyfikacji HTTP, gdyż pozwalają na przenoszenie danych pomiędzy żądaniami. W bibliotece została zaimplementowana ich pełna obsługa, umożliwiająca bardzo proste przenoszenie ciastek oraz ręczne wpisywanie treści nagłówka Cookie.

Podstawowa obsługa

Najprostszą metodą implementacji ciastek jest ich zapis do pliku i późniejsze odczytanie z niego zapisanych danych. Potrzebne będą nam dwie opcje: CURLOPT_COOKIEFILE oraz CURLOPT_COOKIEJAR. Pierwsza pobiera nazwę pliku, z którego będą wczytywane informacje o ciastkach, które zostaną automatycznie wysłane do serwera. Druga odpowiada za zapis otrzymanych w odpowiedzi ciastek. Do określenia umiejscowienia pliku musimy podać ścieżki bezwzględne.

<?php
$ch = curl_init('http://localhost/curl/site.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
curl_exec($ch);
curl_close($ch);
?>

Domyślnie cURL zapisuje ciastka do pliku w formacie Netscape, którego budowy nie będziemy omawiać, gdyż wykracza to poza temat artykułu.

Ręczne przesyłanie ciastek

Ciastka możemy bez problemu przesłać jako nagłówek Cookie, na przykład korzystając z opcji CURLOPT_COOKIE, która przyjmuje jako wartość łańcuch znaków reprezentujący zawartość wymienionego nagłówka. Chcąc wysłać dwa ciastka o nazwach c1, c2 i wartościach wartość1, wartość2, musimy zakodować wartości funkcją urlencode(), a następnie spreparować nagłówek.

<?php
$cookie = 'c1=' . urlencode('wartość1') . '; c2=' . urlencode('wartość2');
$ch = curl_init('http://localhost/curl/site.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_exec($ch);
curl_close($ch);
?>
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (10)
dlaczego
Wtorek 27 Styczeń 2009 2:02:34 pm - yaotzin <yaotzin1_at_o2.pl>

dlaczego znowu nie można wydrukować sobie tego artykułu ??

pobieranie nagłówków
Środa 13 Luty 2008 10:10:17 am - jarmiar <jarek21-1992_at_tlen.pl>

jak można pobrać nagłówki wysyłane przez serwer, do którego chcemy się połączyć i zapisać je w tablicy lub w jakiejś zmiennej

ciastka w zminnych
Piątek 02 Listopad 2007 3:49:11 am - Gacek89 <czupa_at_vp.pl>

witam,
na poczatek chiał bym pogratulowaćdobrego artyku, jak narazie njlepszy jaki w seci znalazłem o curl

chciałbym sie dowedzieć jak mozna zapisać cookies do zmiennej i puźniej z niej odczytać je

Kasowanie ciastek
Wtorek 06 Marzec 2007 1:20:50 am - gustawgustaw <gustawsolski_at_gmail.com>

A jak wykasować automatycznie ciastka po zakończeniu sesji curl?

Nawiasy klamrowe.
Czwartek 08 Luty 2007 9:04:27 pm - Ludvik

Słuszna uwaga. Poprawiłem to. Wielkie dzięki za wskazanie błędu. Dziwne, że u mnie nie wywalało nic.

Re: problem
Piątek 17 Listopad 2006 3:49:05 pm - pako1979

przelicz nawiasy klamrowe w funkcji showAll , brakuje jednego zamykajcego, jak dodasz powinno zadzaialac

Re...
Poniedziałek 06 Listopad 2006 1:29:51 pm - Ludvik

Nie mam jak tego sprawdzić teraz dokładnie, ale w drugim skrypcie prawdopodobnie zamiast URL wpisałeś nazwę samego pliku.

Sprawdzałem skrypty wcześniej i dziwię się, że coś takiego wyskakuje... Jeszcze raz bym rzucił na to okiem, ale nie mam jak, niestety...

problem
Środa 25 Październik 2006 8:05:17 pm - teo <morfeusz215_at_wp.pl>

Witam mam pewien problem : skopiowałem przykładowa stronke - "site.php" jednak gdy ją włańczam manualnie wyskakuje bład :

Parse error: syntax error, unexpected $end in .........../site.php on line 20

lub poprzez L.2.2 wtedy nic sie nie dzieje a gdy przez 3.1 , został wygenerowany nastepujacy bład :

Błąd #6: Couldn't resolve host 'site.php'

Re: bezpieczeństwo
Piątek 18 Sierpień 2006 10:15:35 am - Ludvik

Wszystkie informacje o transferze są zwracane przez metodę curl_getinfo, tak jak jest napisane w 3. części. Nie chciałem zamieszczać spisu stałych, gdyż wszystkie znajdują się manualu.

http://pl.php.net/curl_getinfo

bepieczeństwo
Czwartek 17 Sierpień 2006 11:20:52 pm - takeshin

wszystko pięknie i fajnie,
ale jak to wygląda od strony bezpieczeństwa?

jak sprawdzić, jaki dokument pobieram i ile zajmuje?
co w przypadku jeśli przy wykonaniu:
$ch = curl_init('http://localhost/curl/site.php');
okaże się, że to wcale nie jest plik typu,
którego chciałbym (xml, html) a na przykład 700 avi?

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System