• Как открыть консоль разработчика в safari?

    smanioso
    @smanioso
    Отмечайте ответы на свои вопросы!
    Safari > Настройки > Дополнения > Показывать меню разработка...
    Но тут вопрос в другом - откуда под виндой сафари?
    Ответ написан
    3 комментария
  • Как передать куки вторым запросом в cUrl?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Старый код, логинимся и получаем куки в строку:
    // Отправка POST запроса с получением печенек:
    function send_post_get_cookie($URL='', $PostData=Array(), $cookie='')
    {
        // Отсекаем пустые вызовы:
        if (strlen($URL)<=0) return false;
        // Скопировал строку из FireBug:
        $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
        // Инициализация объекта:
        $ch = curl_init($URL);
        // показывать заголовки (в них куки):
        curl_setopt($ch, CURLOPT_HEADER, 1); 
        // не показывать тело страницы (для экономии траффика):
        curl_setopt($ch, CURLOPT_NOBODY, 1); 
        // это чтобы прикинуться браузером:
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        // можно ставить еще вот это, если удаленный сервер проверяет:
        // curl_setopt($ch, CURLOPT_REFERER, $URL);
        curl_setopt($ch, CURLOPT_POST, 1);
        // включение полей POST в запрос:
        curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
        // если нужны печеньки, установим:
        if (strlen($cookie)>0)
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        // тормозим стандартный вывод:
        ob_start();
        // запускаем запрос:
            curl_exec ($ch);
            curl_close ($ch);
            // получаем заголовки в массив:
            $headers = explode("\n", ob_get_contents());
        ob_end_clean();
        // выдираем строку печенек:
        for ($i=0, $cnt=count($headers); $i<$cnt; $i++) 
            if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
                $cookie .= substr($headers[$i], strpos($headers[$i], 'Set-Cookie:')+strlen('Set-Cookie:')); 
        // и возвращаем результат:
        return $cookie;
    }


    А потом используем ее в других запросах, к примеру загружаем файл после авторизации:
    // Сохранение файла с удаленного хостинга:
    function save_get_file($URL='', $cookie='')
    {
        if (strlen($URL)<=0) return false;
        $filename = $_SERVER['DOCUMENT_ROOT'].'/upload/tmp/'.date('YmdHis_').rand(99,9999999).'.tmp'; 
        $fp = fopen($filename, 'w');
        if (!$fp)
            return false;
        else
        {
            $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
            $ch = curl_init($URL);
            curl_setopt($ch, CURLOPT_USERAGENT, $ua);
            curl_setopt($ch, CURLOPT_FILE, $fp); // чтобы выгрузить в файл;
            if (strlen($cookie)>0)
                curl_setopt($ch, CURLOPT_COOKIE, $cookie);
            curl_exec ($ch);
            curl_close ($ch);
            return $filename;
        }
    }
    Ответ написан
    Комментировать