Перейти к содержанию

staff - мой блог

  • записи
    4
  • комментариев
    10
  • просмотров
    45 270

Используем CURL в PHP


staff

3 890 просмотров

Скрипт для начинающих программистов на PHP

Что может скрипт :lol:

 

1. Получать данные, которые надо передать на удалённую форму

2. Использовать прокси сервера, для передачи данных :)

3. Настройку timeout при передачи данных

 

public function getCurlData($url, $post = '', $validateCookie = false, $cookie = '', $useProxy = false, $proxyIP = '', $proxyPort = '', $timeout = '') {
	try {
		$ch = curl_init($url);

		if (!empty($post)) {
			curl_setopt($ch, CURLOPT_POST, 1); //указывает, что передаём данные методом POST
			curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //передаваеммые данные из формы (form)
		}
		curl_setopt($ch, CURLOPT_HEADER, 0);  // DO NOT RETURN HTTP HEADERS
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

		curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); //данные браузера
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //хотим ли мы следовать на ссылку редиректа :)

					//блок считывания cookies, для авторизации на сайте :)
		if ($validateCookie) {
			if ($cookie == '') {
				$cookie_data = file($this->_cookieFile);

				for ($i = 4; $i < count($cookie_data); $i++) {
					$tmp = explode("\t", $cookie_data[$i]);
					$cookie .= $tmp[5] . '=' . trim($tmp[6]) . ';';
				}
				$cookie_data = $cookie;

				curl_setopt($ch, CURLOPT_COOKIEFILE, $this->_cookieFile);
				curl_setopt($ch, CURLOPT_COOKIEJAR, $this->_cookieFile);
				$cookie = "Cookie: " . $cookie_data;
			} else {
				$cookie = "Cookie: " . $cookie;
			}
			curl_setopt($ch, CURLOPT_COOKIE, $cookie); //записываем полученные cookies в запрос, для дальнейшей обработки :)
		}

		if ($useProxy) {
			curl_setopt($ch, CURLOPT_PROXY, $proxyIP . ':' . $proxyPort);
			//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
		}

		if (!empty($referer)) {
			curl_setopt($ch, CURLOPT_REFERER, $refererSite);
		}

		if (!empty($timeout)) {
			curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		}

		$result = curl_exec($ch);

		curl_close($ch);

		return $result;
	} catch (Exception $e) {
		throw new PortalException(500, Prado::localize('error') . '|' . $e->getMessage());
	}
}

 

На выходе возвращает данные, желаемого сайта :)

Пользуемся на здоровье :)

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Гость
Добавить комментарий...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...