2009-10-26 3 views
1

Я пытаюсь настроить страницу php, которая использует cURL для доступа к серверу сторонних разработчиков для входа в систему. Сейчас мой код успешно выполняет вход на сторонний сервер, но поскольку cURL не отправляет SESSION cookie пользователю, пользователь должен сам войти в системуФайлы cookie PHP и cURL

Как я могу получить cURL для отправки файлов cookie клиенту. Благодаря

ответ

4

Отъезд documentation для следующих Curl опций:

CURLOPT_COOKIE 
CURLOPT_COOKIEFILE 
CURLOPT_COOKIEJAR 

EDIT

После прочтения ваш вопрос более подробно, я боюсь сказать вам, что нет никакого способа, чтобы написать куки-файлы в браузер клиента, если вы не перенаправляете клиента на сайт, на который вы пытаетесь разрешить их. Куки-файлы браузера работают с моделью безопасности, известной как Same Origin Policy. Это в основном означает, что домены могут выдавать файлы cookie только для своих OWN-доменов и не могут выдавать файлы cookie для других доменов. В вашем конкретном случае:

client --CONTACTS--> foo.com --cURL-LOGIN--> bar.com 
bar.com --bar.com-COOKIE--> foo.com --foo.com-COOKIE--> client 
client --foo.com-COOKIE--> bar.com (Will not work) 

В принципе, foo.com НЕ МОЖЕТЕ создавать куки на клиенте для bar.com!

+0

что относительно поддоменов? –

+0

Для поддоменов после захвата файла cookie из cURL, используя предложенные вами варианты, вы должны использовать set_cookie с доменом: .domain.com, где домен является самым длинным общим субдоменом. –

1

Возможно, браузер пользователя не позволит вам устанавливать файлы cookie для другого домена.

В вашем PHP-коде вы можете войти и получить cookie сеанса для (например, Hotmail). Но вы не сможете передать эту сессию пользователю (так что он/она также войдет в систему).

Это связано с тем, что многие браузеры и конфигурации запрещают установку сторонних файлов cookie.

+0

ну, его внутри того же поддомена Сервер 1: foo.bar.com Сервер 2: sub.domain.bar.com –

0

Вы можете установить cookie в браузере пользователя, не перенаправляя его на сервер. то, что вам нужно сделать, - это заставить пользователя напасть на вашу php-страницу с помощью curl-кода. то вы можете взять его данные и отправить эти данные на сервер. Но не позволяйте серверу переделывать вас. Установите опцию как CURLOPT_FOLLOWLOCATION как ложные и установить CURLOPT_HEADER как истинный Теперь возьмите заголовок и извлечь печенье и местоположение заголовков, а затем передать их в качестве заголовков в браузер клиента, как заголовок ("Location: ...) и заголовок («Set-Cookie: ....). вы также можете отправить другие заголовки, извлекая их. следующий [сообщение] html page not getting cookies through libcurl имеет аналогичную ситуацию

Смежные вопросы