Как "тянуть" куки за собой в курле?

Тема в разделе "ASM, С/С++, Delphi, Java", создана пользователем HatoL, 16 окт 2012.

Статус темы:
Закрыта.
  1. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    В курле есть опции CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE, но они используют отдельный файл. А мне надо еще проще - чтобы курл просто вел "сессию", в которой отдавал все принятые куки и принимал все, которые требует сервер. Нужно это в сочетании с опцией CURLOPT_FOLLOWLOCATION (чтобы переходил по всем Location заголовкам, используя куки).

    P. S. использую курл я не в PHP, а в C++, поэтому такая вот потребность в отсутствии этого лишнего файла.
     
  2. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Вот что-то надыбал, хоть в с++ я ламер, но вродь то. Кстати нафига ты тут создал тему? Да и в с++ используется libcurl! да и что всё-таки мешает создать этот файл?
     
    dazed нравится это.
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Куки в заголовках отсылают и принимают, так что можешь хоть на аналоге fopen реализовать:)

    Для curl_setopt есть параметр CURLOPT_COOKIE - Содержимое заголовка "Cookie: ", используемого в HTTP-запросе.
     
  4. XanderDurden

    XanderDurden Создатель

    Регистр.:
    18 июл 2012
    Сообщения:
    10
    Симпатии:
    1
    Нужно при установке опции курла CURLOPT_COOKIEFILE нужно указать то ли пустую строку, то ли NULL. Проверь. Просто самому это не нужно было. Чаще, даже наоборот, чтобы потом увидеть значения некоторых куков :)
     
  5. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    Не особо сложно будет сделать, чтобы запись кукисов велась в папку, где имя файла было названием домена. Либо можете придумать любой другой способ хранения данных.

    Все в кучу не получиться, т.к. каждый принятый кукис относится только к определенному сайту. Поэтому либо использовать структуру: один сайт - его кукисы, либо создавайте свое типизированное хранилище.

    Да забыл сказать, если нужно хранить кукисы только на время работы программы, то можете создать массив в памяти, но тоже с разделением по доменам.
    А у курла есть параметр CURLOPT_COOKIE где можно передавать не ссылку на файл, а строку с кукисами.
     
Статус темы:
Закрыта.