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

Форум PHP

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

 

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

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

тема: Получение картинки с удаленного хоста .
 
 автор: dima2207   (03.01.2008 в 22:03)   письмо автору
 
 

Привет всем !
проблемма такого рода . когда я получаю картинку с удаленного хоста с помощью сокета то у меня на экране бред какойто . а хотелось бы видеть(картинку) то что мы получаем ( в оригинале ).
Как такое вообще можно реализовать ? в идеале мне нужно записать полученную картинку на диск . и что-бы она потом была читабельная (как картинка а не как набор символов).

<?
// функция получения страницы с удаленного хоста.
function getdata($host$path)
{
     
$buffer true;
     
$fp = @fsockopen("tcp://".$host80$errno$errstr10);
     if (!
$fp) {
         return 
false;
     } else {
         
$out  "GET $path HTTP/1.1\r\n";
         
$out .= "Host: $host\r\n";
         
$out .= "Referer: $host$path\r\n";
         
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
         
$out .= "Connection: Close\r\n";
         
$out .= "\r\n";
         
fwrite($fp$out);
         while (!
feof($fp)) {
             
$buffer .= fgets($fp1024);
         }
         
fclose($fp);
     }
     return 
$buffer;
}
?>

   
 
 автор: dima2207   (03.01.2008 в 22:51)   письмо автору
 
   для: dima2207   (03.01.2008 в 22:03)
 

Применение функции base64_decode($str); тоже не принесло желаемого результата .

   
 
 автор: Unkind   (03.01.2008 в 22:56)   письмо автору
 
   для: dima2207   (03.01.2008 в 22:51)
 

a) Замените HTTP/1.1 на HTTP/1.0.
b) Нужно отделить заголовки (list($headers,$buffer) = explode("\r\n\r\n", $buffer, 2)) от контента.

   
 
 автор: dima2207   (03.01.2008 в 23:13)   письмо автору
 
   для: Unkind   (03.01.2008 в 22:56)
 

Немного непонтно . поподробнее пожалуйста о функции (list($headers,$buffer) = explode("\r\n\r\n", $buffer, 2))

   
 
 автор: Unkind   (03.01.2008 в 23:39)   письмо автору
 
   для: dima2207   (03.01.2008 в 23:13)
 

Это не функция, а
a) разбивка значения $buffer на две части - заголовки и тело документа (в HTTP сначала идут заголовки, затем пустая строка и тело документа) с разделителем двойной CRLF (\r - CR, LF - \n);
b) передача получевшегося значениея (массива) конструкции list при помощи оператора присвоения;
c) создание двух переменных - $headers и $buffer, содержащих заголовоки и тело документа соответственно.

Вам, насколько я понял, нужно тело - сама картинка.

   
 
 автор: Berzerk   (04.01.2008 в 18:52)   письмо автору
 
   для: dima2207   (03.01.2008 в 22:03)
 

можно просто использовать функцию copy ( string source, string dest )

   
Rambler's Top100
вверх

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