проблема curl + cookie

Тема в разделе "PHP", создана пользователем TrastMan, 6 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Чтобы перейти по ссылке нужны куки поставленные на предидущей страничке. Куки такого вида:

    "параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;
    var a22767092131=new Date();var h0285536890192=new Date();h0285536890192.setTime(a22767092131.getTime()+249696002858);
    4d5e11111a56=1281078431-0-!0;path=/;expires='+h0285536890192.toGMTString(h0285536890192)+';';
    d270d11111d173=bf0a111111739;path=/';"

    При работе через фаил:

    PHP:
           curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt"); 
           
    curl_setopt($chCURLOPT_COOKIEFILE"cookie.txt");
    В cookie.txt пишется только: "параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;"

    Пробую через:

    PHP:
    curl_setopt($chCURLOPT_COOKIE$cookie);
    С разными вариантами найденными в примерах :), вроде:

    PHP:
    function get_cookie($page) { // и бонус, для парсинга кукисов 
        
    if(preg_match("|Set-Cookie: (.*)\n|Uis",$page,$rnd)) return $rnd[1]; 
    else return 
    false;
    Смотрю
    PHP:
    echo $cookie
    Выдает ничего или только : "4d5e11111a56=1281078431-0-!0;path=/;expires=d270d11111d173=bf0a111111739;path=/"

    Как грамотно работать с такими кукисами?
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    а куки случаем не через js пишутся?

    пишет курл то, что ему передает сервер -- можешь проверить посмотрев http заголовки ответа

    Вот если ты там найдешь те куки, которые не пишутся в файл -- тогда узнаешь что парсить

    заголовки, или js код в странице
     
  3. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Вот этот участок довольно странный.
     
  4. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Да, в заголовках действительно есть только:
    Cookie: "параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;"
    И вот такая странность:
    Cookie2: $Version=1

    Все, почти ршено:)
    Маленькая неполадка... в этой стоке:

    PHP:
    $pos strpos($text"document.cookie='");
    Вместо
    PHP:
    "document.cookie='"
    может быть
    PHP:
    "document.cookie=""
    Как сделать, чтобы было все равно какая скобка стоит за document.cookie= ?
     
  5. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    70
    Симпатии:
    15
    Регулярками)
     
  6. Sanja_

    Sanja_ Создатель

    Регистр.:
    9 окт 2009
    Сообщения:
    27
    Симпатии:
    8
    PHP:
    if (strpos($text"document.cookie='"))
    $pos strpos($text"document.cookie='"); 
    else if (
    strpos($text"document.cookie=\""))
    $pos strpos($text"document.cookie=\""); 
    вот так или ещё можно так
    PHP:
    preg_match_all("#document.cookie=['\"]#i",$peremenay,$pos);
    далее регулярку редактируйте под свои нужды!
     
    TrastMan нравится это.
  7. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Еще такой вопрос. Я правильно понимаю, что

    PHP:
    curl_setopt($chCURLOPT_COOKIE$cookie);
    должно передавать все куки из заголовков в переменную $cookie, по аналогии с

    PHP:
    curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt");
    записывающим их в cookie.txt?

    Если CURLOPT_COOKIEJAR срабатывает нормально, то CURLOPT_COOKIE не дает ожидаемого результата.

    Попытка записать $cookie в фаил:

    PHP:
        $t fopen("cookie.txt""w");
        
    fputs($t$cookie);
        
    fclose($t);
    или просто вывести:

    PHP:
    echo $cookie
    возвращает пустоту:(
     
  8. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    CURLOPT_COOKIE отправляет серверу строку с куками.
    CURLOPT_COOKIEFILE отправляет серверу куки из файла.

    CURLOPT_COOKIEJAR сохраняет полученные от сервера куки в файл.
     
  9. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Ясно. А курлом нельзя передать куки из заголовоков в переменную? файл дергать постоянно некрасиво...
     
  10. Sanja_

    Sanja_ Создатель

    Регистр.:
    9 окт 2009
    Сообщения:
    27
    Симпатии:
    8
    можно выводим возращаемый хеадер, с него режем куки.
     
Статус темы:
Закрыта.