2012-10-23 10 views
6

Mam dwie witryny: dev1.test.com i dev2.test.com.

Są to dwie witryny działające na różnych serwerach. dev1.test.com to miejsce, w którym się zalogowałem i mam pliki cookie ustawione na * .test.com w celu sprawdzenia, czy użytkownik jest zalogowany.

Teraz na dev2.test.com, chcę sprawdzić, czy bieżący użytkownik jest zalogowany przez wysłanie żądania PHP CURL do dev1.test.com. W mojej prośbie o zwijanie chcę uwzględnić zawartość $ _COOKIE (jeśli zawiera informacje o plikach cookie * .test.com) do tego żądania zwijania.

Jak mam to zrobić w curl php?

+0

Dlaczego po prostu nie ustawić ciasteczka dla wszystkich '.test.com'? –

Odpowiedz

1

Przeczytaj to: http://be2.php.net/manual/en/function.curl-setopt.php

CURLOPT_COOKIEFILE i CURLOPT_COOKIEJAR

Więc trzeba czytać $_COOKIE z jednego serwera, zapisać go do pliku, i wysłać go do innego

It`s wygląda następująco:

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
9

Ponieważ posiadasz domenę cookie z symbolami wieloznacznymi, dev2 będzie również miało takie same ciasteczka jako dev1. Więc w zasadzie trzeba powiedzieć CURLOPT_COOKIE «i przechodzą w ciąg cookies«NAME1 = wartosc1 „pass moje ciasteczka z innego serwera przez zwinięcie

Zawinięcie opcja chcesz to.»; Name2 = wartość2»

Kładzenie to razem (niesprawdzone - trzeba owinąć to między innymi funkcje curl, oczywiście)

$cookiesStringToPass = ''; 
foreach ($_COOKIE as $name=>$value) { 
    if ($cookiesStringToPass) { 
     $cookiesStringToPass .= ';'; 
    } 
    $cookiesStringToPass .= $name . '=' . addslashes($value); 
} 
curl_setopt ($ch, CURLOPT_COOKIE, $cookiesStringToPass); 
+4

To również działa: 'curl_setopt ($ ch, CURLOPT_COOKIE, $ _SERVER [" HTTP_COOKIE "]);' –

3

to co używam do przekazania $ _COOKIE poprzez zwinięcie:

$cookie_data = 
    implode(
    "; ", 
    array_map(
     function($k, $v) { 
     return "$k=$v"; 
     }, 
     array_keys($_COOKIE), 
     array_values($_COOKIE) 
    ) 
); 
curl_setopt($ch, CURLOPT_COOKIE, $cookie_data); 

Dotyczy: http://php.net/manual/en/function.curl-setopt.php

1

Zamiast pracować z $_COOKIE można również użyć $_SERVER['HTTP_COOKIE'], który zawiera ciąg nagłówka HTTP.

tj. musisz tylko napisać to:

curl_setopt($ch, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']); 
Powiązane problemy