Библиотека Curl в PHP. Загрузка удаленных файлов и картинок.
PHP включает LibCUrl — библиотеку, созданную Daniel’ом Stenberg’ом.

Она даёт возможность соединяться с серверами и сайтами различных типов и по разным протоколам, скачивать веб-страницы, картинки, документы.

В LibCUrl включена поддержка протоколов http, https, ftp, gopher, telnet, dict, file и ldap.
libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку файлов по FTP (это возможно сделать также РНР-расширением ftp), загрузку с помощью форм HTTP, прокси, куки и аутентификацию user+password.

Особенность библиотеки, что она маскируется под любой бразуер.

Эта библиотека была добавлена в PHP 4.0.2.

Код использования этой библиотеки выглядит следующим образом:

Код:
$curl = curl_init($url);
if ( !$curl ) die ('Err initial Curl library');
   // Скачанные данные не выводить поток
   curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
   // Скачиваем
   $page = curl_exec($curl);    //В переменную $page помещается страница
   curl_close($curl);   // Не забывает закрыть соединение
   //**Сохраняем файл либо обрабатываем.

Параметры подключения устанавливаются функцией curl_setopt, куда передается указатель на объект библиотеки, и устанавливаемый параметр.

bool curl_setopt ($curl, $option, $value)
Большинство параметров предопределены в виде констант CURLOPT_***.

Нам осталось только ознакомиться с основными параметрами для библиотеки Curl:

CURLOPT_RETURNTRANSFER — результат выполнения возвращается в переменную, и не выводится в браузер
CURLOPT_POST — передача данных методом POST (для отправки форм)
CURLOPT_POSTFIELDS – тут передаём поля с данными, которые передаются методом POST
CURLOPT_USERAGENT — задает значение HTTP-заголовка User-Agent для маскировки под браузер (к примеру Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.14)
Больше параметров описано здесь - http://sevidi.ru/php/phppage62.php.