cURL вызов функции пример исползования cURL через прокси

cURL помогает нам скачивать и закачивать файлы, страницы и целые сайты с одного сервера на другой.
В нашем конкретном случае речь пойдёт об использовании curl в web-программировании средствами php.
Напишем простую функцию для получения контента (HTML страницы) с другого сайта.

function curl ($url='')
{
/* function_exists проверит есть ли на Вашем хостинге функция cURL. Если она отключена скрипт выведет сообщение "cURL not found on your server!". В этом случае есть смысл написать в поддержку хостинг провайдера с вопросом почему не работает CURL. */
if(function_exists("curl_init")){
$ch = curl_init();
$user_agent = "Mozilla/5.0";
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
/* Симулирует "юзер агент" - строку которая обычно говорит о том каким браузером и операционной системой пользуется посетитель сайта. */
curl_setopt ($ch, CURLOPT_HEADER, 0);
/* Если поставить единицу, а не ноль, cURL вернет не только контент , но и код ответа стороннего сервера (например: код 200 - означает, что соединение прошло успешно. 302 - что ресурс перемещён и т.д.). Также покажет ПО удаленного сервера. Бывает полезно при отладке (например: если Вы не можете понять, почему CURL возвращает пустую "белую" страницу) */
// curl_setopt($ch, CURLOPT_PROXY, 'proxy.com:port');
/* Эта строка отвечает за соединение через анонимный прокси сервер. Если Вы хотите чтобы на стороннем сайте, с которого Вы берёте контент, не записывался в логи IP адрес вашего сайта-сервера, допишите вместо proxy.com:port адрес и порт анонимного прокси. Его можно взят из бесплатного списка прокси серверов. После этого уберите комментарий - черточки перед строчкой. */
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
/* На некоторых сервера, хостингах этот пункт может вызывать ошибку Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in. Это значит, что Ваш хостинг провайдер , в целях безопасности , включил некоторые ограничения для выполняемых скриптов. Поставьте два слеша (закоментируйте эту строчку) или удалите эту строку и ошибка пропадёт. */
curl_setopt ($ch, CURLOPT_TIMEOUT, 30);
/* Время, в секундах, которое может пройти пока Ваш сервер ждёт ответа от другого сервера. */
$curl_print = curl_exec($ch);
curl_close($ch);
}
else $curl_print = "cURL not found on your server!";
return $curl_print;
}
$content = curl("http://mail.ru");
/* Вызываем нашу функцию, получаем контент с сайта mail.ru */
echo $content;
/* в некоторых случаях , при получения контента с другого сайта, особенно на русском языке, Вы можете увидеть "крякозябры". Это явления возникает из-за разности кодировок у Вас на сервере и на сервере с которого Вы получаете контент. Попробуйте добавить строку header("Content-Type: text/html; charset=utf-8"); в самое начало Вашего скрипта. */

Опубликовано 15.01.2013 в 14:32 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: PHP программирование · Теги: , , , , , , , ,