Проблема с cURL + COOKIE

Discussion in 'PHP' started by Москва, 5 May 2011.

  1. Москва

    Москва New Member

    Joined:
    19 Oct 2010
    Messages:
    62
    Likes Received:
    3
    Reputations:
    0
    В общем не разобрался я с этими:
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //Из какого файла читать
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //В какой файл записывать
    Ну и пох на них. Сделал так чтобы в заголовке куки выводило, вырезаю значит их:
    Code:
    $cookiepage = explode("\n", $result);
    for ($searchcookie_i=0;$searchcookie_i<count($cookiepage);$searchcookie_i++) {
        if (strpos("salt".$cookiepage[$searchcookie_i], 'Set-Cookie') > 0) {
    	    $p1 = strpos($cookiepage[$searchcookie_i], "Set-Cookie: ")+12;
    		$p2 = strlen($cookiepage[$searchcookie_i])+$p1;
    		$cookie = substr($cookiepage[$searchcookie_i], $p1, $p2-$p1);
    	}
    }
    и вставляю сюда:
    Code:
        $url = "http://example"; 
        $ch = curl_init(); 
    	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
        curl_setopt($ch, CURLOPT_URL,$url); // set url to post to 
        curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
        curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s 
    	curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        $result = curl_exec($ch); // run the whole process 
        curl_close($ch);
    страница почемуто не загружается, а если взять эти строки из переменной и вставить в ручную:
    Code:
        $url = "http://example"; 
        $ch = curl_init(); 
    	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
        curl_setopt($ch, CURLOPT_URL,$url); // set url to post to 
        curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
        curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s 
    	curl_setopt($ch, CURLOPT_COOKIE, "blablabla=blablabla");
        $result = curl_exec($ch); // run the whole process 
        curl_close($ch);
    тогда все работает.
    Вопрос таков, почему с переменной не читает?)
     
  2. Москва

    Москва New Member

    Joined:
    19 Oct 2010
    Messages:
    62
    Likes Received:
    3
    Reputations:
    0
    Все разобрался с куками, вернулся к:
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //Из какого файла читать
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //В какой файл записывать
    Надо было путь полный прописывать)
    curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT']."/cookie.txt");
     
  3. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Все зависит от натсройки сервера, зачастую просто 'cook' хватает. Ну а вообще советую куки парсить через CURLOPT_HEADER 1 в переменную.
     
    _________________________
  4. energ77

    energ77 New Member

    Joined:
    17 Jul 2010
    Messages:
    49
    Likes Received:
    4
    Reputations:
    0
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //в любой заготовленый файл записывать
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //из него же читать

    проюуй на другом серве
     
  5. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Жаль, что в PHP не поддерживается опция библиотеки курла "CURLOPT_COOKIELIST", которая решила бы все эти "проблемы" с куками...