Как сохранить куки, извлеченные CURL, чтобы они были доступны для страницы, загруженной в iFrame - PullRequest
1 голос
/ 16 марта 2011

У меня есть ситуация, когда при загрузке страницы я отправляю некоторые данные аутентификации (в данном случае ассоциативный массив $data), которые проверяются скриптом в другом домене.Код ниже:

$cookie_path = 'cookies.txt';

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'http://www.mysite.com/verify');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_path);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_path);
    curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
    $result = curl_exec($ch);

затем сайт устанавливает сеанс (в этом случае я использую платформу codeigniter, а сеансы устанавливаются следующим образом: $this->session->set_userdata('logged_in', true);)

однако при загрузке внешнегосайт в iframe, по-видимому, не может обнаружить, что сеанс установлен, и перенаправляет на страницу входа.

Как убедиться, что мой файл cookie сеанса отправляется правильно и к нему может получить доступ iframe?

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

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

Если вы управляете сайтом, на котором пытаетесь создать сеанс, вы можете передать идентификатор сеанса в сценарий PHP, а затем динамически сгенерировать URL-адрес iframe, включая идентификатор сеанса в виде строки запроса, например:

http://www.brainbell.com/tutors/php/php_mysql/Encoding_the_session_ID_as_a_GET_variable.html

Редактировать Чтобы уточнить, если вы управляете сценарием на втором сайте, вы можете изменить его, чтобы предоставить SESSIONID аутентифицированного сеанса для вашего сценария CURL, который ваш PHP-сценарий, выполняющий запрос cURL, может затем включить в динамически генерируемый URL-адрес iFrame src.

0 голосов
/ 16 марта 2011

Вы можете установить куки через:

http://php.net/manual/en/function.setcookie.php

Однако вы не можете устанавливать куки для доменов за пределами домена вашего скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...