Вход Регистрация
Файл: tegas/CurlClass.php
Строк: 63
<?php
##################################АВТОР MAKSAMKA ICQ 1542636 САЙТ  MAKSAMKA.RU ЗАПРЕЩЕНО ИСПОЛЬЗОВАТЬ ЭТОТ ГРАБ В КОММЕРЧЕСКИХ ЦЕЛЯХ.################################

class CurlClassConfig
{
public 
$userAgent#Юзер-агент
public $referer#Реферер
public $proxy FALSE#Адрес прокси
public $cookiesFile FALSE#Путь к файлу с cookies
public $followLocations TRUE#Следовать ли редиректам?
public $timeout 10#Таймаут соединения
}

class 
CurlClass
{
private 
$_ch#Дескриптор соединения
#####
#Инициализируем сеанс CURL
#
public function __construct ()
{
if (!
$this->_ch curl_init ())
throw new 
Exception ('Неудалось установить сеанс CURL');
}
#
public function __destruct ()
{
curl_close ($this->_ch);
}
#
#Закрываем сеанс
#####

    /**
     * Выполнение запроса
     * @param $config BugagaCurlClassConfig Объект с настройками запроса
     */
    
protected function execute (CurlClassConfig $config)
    {
        
// Скачанные данные не выводить в поток (указывает, что функция curl_exec должна вернуть полученный ответ, а не отправить его сразу браузеру)
        
curl_setopt ($this->_chCURLOPT_RETURNTRANSFERTRUE);

        
// Назначаем ЮЗЕР-АГЕНТ
        
curl_setopt ($this->_chCURLOPT_USERAGENT$config->userAgent);

        
// Назначаем РЕФЕРЕР
        
curl_setopt ($this->_chCURLOPT_REFERER$config->referer);

        
// Следовать ли редиректам?
        
curl_setopt ($this->_chCURLOPT_FOLLOWLOCATION$config->followLocations);

        
// Таймаут
        
curl_setopt ($this->_chCURLOPT_TIMEOUT$config->timeout);
        
curl_setopt ($this->_chCURLOPT_CONNECTTIMEOUT$config->timeout);



        
// Назначаем прокси-сервер
        
if ($config->proxy)
            
curl_setopt ($this->_chCURLOPT_PROXY$config->proxy);



        
// Из-за особенностей curl КУКИ НАДО ИСПОЛЬЗОВАТЬ ПЕРЕД КАЖДЫМ CURL-ЗАПРОСОМ
        // Используем куки
        
if ($config->cookiesFile)
        {
            
// Задаем ПРАВИЛЬНЫЙ путь к файлу с куками
            
$ololo dirname (__FILE__) . DIRECTORY_SEPARATOR $config->cookiesFile;

            
curl_setopt ($this->_chCURLOPT_COOKIEJAR$ololo);
            
curl_setopt ($this->_chCURLOPT_COOKIEFILE$ololo);
        }



        
$data curl_exec ($this->_ch);

        if (
curl_errno ($this->_ch) == 5)
        {
            
curl_close ($this->_ch);
            throw new 
Exception ('Нерабочая прокся :-(');
        }

        return 
$data;
    }

    
/**
     * Загрузить страницу
     * 
     * @param $config BugagaCurlClassConfig Объект с настройками запроса
     * @param $url string Url получаемой страницы
     * @return string Исходный код страницы
     */
    
public function getPage (CurlClassConfig $config$url)
    {
        
// Пишем url страницы
        
curl_setopt ($this->_chCURLOPT_URL$url);

        
// Выполняем запрос
        
return $this->execute ($config);
    }

    
/**
     * Послать Post запрос. Внимание, передаваемые параметры никак экранировать не надо, они и так экранируются
     * 
     * @param $config BugagaCurlClassConfig Объект с настройками запроса
     * @param $url string Url страницы, на которую надо отправить запрос (другими словами, Action формы)
     * @param $params array Ассоциативный массив с параметрами
     * @return string Возвращенная страница
     */
    
public function sendPost (CurlClassConfig $config$url$params)
    {
        
/**
         * Отправляем POST запрос
         */
        // Пишем url страницы
        
curl_setopt ($this->_chCURLOPT_URL$url);

        
curl_setopt ($this->_chCURLOPT_POSTTRUE);
        
// Назначаем значения передаваемых переменных
        
curl_setopt ($this->_chCURLOPT_POSTFIELDShttp_build_query ($params));

        
// Выполняем запрос
        
return $this->execute ($config);
    }

    
/**
     * Послать Get запрос
     */
    
public function sendGet (CurlClassConfig $config$url$params)
    {
        
    }

}
Онлайн: 1
Реклама