У меня есть два сайта dev1.test.com и dev2.test.com .
Это два сайта, работающих на разных серверах. dev1.test.com – это место, где я вошел в систему, и у меня есть файлы cookie, установленные на * .test.com, чтобы проверить, зарегистрирован ли пользователь.
Теперь на dev2.test.com я хочу проверить, зарегистрирован ли текущий пользователь, отправив запрос PHP CURL на dev1.test.com. В моем запросе curl я хочу включить содержимое $ _COOKIE (где он имеет информацию о файлах cookie * .test.com) в этот запрос curl.
Как мне это сделать в php curl?
Поскольку у вас есть подстановочный файл cookie, dev2 также будет иметь те же файлы cookie, что и dev1. Поэтому в основном вам нужно сказать: «Передайте мои файлы cookie на другой сервер через завиток.
Параметр curl, который вы хотите, это «CURLOPT_COOKIE», и вы передаете строку cookie «name1 = value1; name2 = value2»
Объединяя это вместе (непроверенный – вам нужно, конечно, обернуть это среди других функций завитка)
$cookiesStringToPass = ''; foreach ($_COOKIE as $name=>$value) { if ($cookiesStringToPass) { $cookiesStringToPass .= ';'; } $cookiesStringToPass .= $name . '=' . addslashes($value); } curl_setopt ($ch, CURLOPT_COOKIE, $cookiesStringToPass );
Это то, что я использую для пересылки $ _COOKIE через curl:
$cookie_data = implode( "; ", array_map( function($k, $v) { return "$k=$v"; }, array_keys($_COOKIE), array_values($_COOKIE) ) ); curl_setopt($ch, CURLOPT_COOKIE, $cookie_data);
Вместо работы с $_COOKIE
вы также можете использовать $_SERVER['HTTP_COOKIE']
, который содержит строку заголовка HTTP.
Т.е. вам просто нужно написать это:
curl_setopt($ch, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
Читайте это: http://be2.php.net/manual/en/function.curl-setopt.php
CURLOPT_COOKIEFILE
и CURLOPT_COOKIEJAR
Таким образом, вы должны прочитать $_COOKIE
с одного сервера, сохранить его в файл и отправить его другому
Это выглядит так:
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");