2012-10-23 43 views
6

我有兩個站點dev1.test.comdev2.test.com

這些是在不同服務器上運行的兩個站點。 dev1.test.com是我登錄的地方,我的Cookie設置爲* .test.com以驗證用戶是否已登錄。

現在在dev2.test.com上,我想通過向dev1.test.com發送PHP CURL請求來檢查當前用戶是否已登錄。在我的curl請求中,我希望將$ _COOKIE(其中包含* .test.com的cookie信息)的內容包含到此curl請求中。

我應該怎麼做,在PHP捲曲?

+0

爲什麼不只是設置所有'.test.com'的cookie? –

回答

1

閱讀:http://be2.php.net/manual/en/function.curl-setopt.php

CURLOPT_COOKIEFILECURLOPT_COOKIEJAR

所以,你必須從一臺服務器讀取$_COOKIE,將其保存到一個文件,並將其發送給另一個

它`是這樣的:

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

由於你有一個通配符cookie域,dev2也會有相同的cookies作爲dev1。所以基本上你需要說CURLOPT_COOKIE‘你在餅乾的字符串傳遞‘名1 =值「通過捲曲通過我的餅乾到其他服務器

你想要的捲曲選項’; 2 =值2’

把這個在一起(未經測試 - 你需要用這當中的其他捲曲功能,當然)

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

這似乎也工作:'curl_setopt($ ch,CURLOPT_COOKIE,$ _SERVER [「HTTP_COOKIE」]);' –

3

這是我使用的是通過捲曲轉發$ _COOKIE什麼:

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

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

1

而不是使用$_COOKIE您還可以使用$_SERVER['HTTP_COOKIE'],其中包含HTTP標頭字符串。

I.e.你只需要寫這個:

curl_setopt($ch, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);