Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: скачка файлов по типу. использую CURL
 
 автор: Bloody Angel   (06.02.2007 в 00:24)   письмо автору
 
 

Перерыл всю документацию по curl - ничего не нашел... :(

Скачать любую страницу *.php, *.html... - без проблем, сокеты работают исправно.

Но если скачивать что либо другое - ту же картинку *.jpg, *.gif - выдает следующее:

Method Not Allowed
The requested method POST is not allowed for the URL /lala/lala.jpg

причем 50 на 50 - как повезет...

в браузере вставляешь адрес - открывается. CURL - непонятки...

думаю загвоздка где то здесь:

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $referer);

   
 
 автор: Саня   (06.02.2007 в 01:08)   письмо автору
 
   для: Bloody Angel   (06.02.2007 в 00:24)
 

Вместо POST надо GET. Тут уже документация по протоколу HTTP/1.0 нужна...

   
 
 автор: Bloody Angel   (06.02.2007 в 18:07)   письмо автору
 
   для: Саня   (06.02.2007 в 01:08)
 

ставлю

curl_setopt($ch, CURLOPT_POST, 0);

пишет тоже самое...

   
 
 автор: mihdan   (07.02.2007 в 11:56)   письмо автору
 
   для: Bloody Angel   (06.02.2007 в 18:07)
 

Приведи-ка полный вариант скрипта, я кажется знаю в чем суть, просто надо посмотреть...

   
 
 автор: Bloody Angel   (07.02.2007 в 14:26)   письмо автору
 
   для: mihdan   (07.02.2007 в 11:56)
 

if ($method == 'POST') $use_post = 1;
else $use_post = 0;

$socket = '';

$ch = curl_init();

if ($proxy == 1) {
$connect = $proxyHost.':'.$proxyPort;
curl_setopt($ch, CURLOPT_PROXY, $connect);
}

curl_setopt($ch, CURLOPT_POST, $use_post);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');

// загрузка страницы и выдача её браузеру
$socket = curl_exec($ch);

if( curl_errno($ch) != 0 ) {
die('CURL_error: ' . curl_errno($ch) . ', ' . curl_error($ch));
};

// завершение сеанса и освобождение ресурсов
curl_close($ch);

Все это реализовано в виде функции. передаются следующие параметры:
$method - собственно метод. Если там "POST" - то используем этот метод, иначе как я понимаю, "GET"
$proxy - использовать прокси, или нет
$proxyHost - адрес прокси, через которую я выхожу
$proxyPort - адрес порта на проксе
$url - адрес скачиваемой страницы (www.lala/lala/lalala.jpg)
$referer - думаю, понятно

В итоге в $socket - та самая картинка...но в виде кучи непонятных символов

   
 
 автор: mihdan   (07.02.2007 в 14:34)   письмо автору
 
   для: Bloody Angel   (07.02.2007 в 14:26)
 

Для POST пишется так


curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,  "login=$login&password=$password&client_type=NIC-D&password_type=adm"); 


У вас я не увидел этого или я что то не так понял

   
 
 автор: Bloody Angel   (07.02.2007 в 17:18)   письмо автору
 
   для: mihdan   (07.02.2007 в 14:34)
 

У меня так:

if ($method == 'POST') $use_post = 1;
else $use_post = 0;

curl_setopt($ch, CURLOPT_POST, $use_post);

А мне, то, как я понял, нужен GET !!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования