Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скачать картинку с удаленного сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Вопрос вроде простой, но случай сложный ... вроде
kotyara1979
Отправлено: 12 Декабря, 2013 - 13:08:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Добрый день, уважаемые форумчане.

Собственно, суть вопроса.
1. Есть простейшая страница с изображением (код ниже).
2. Мне нужно скачать картинку.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3.     <head>
  4.         <title>
  5.             jpeg.php (изображение «JPEG», 515 Ч 700 пикселов)
  6.         </title>
  7.     </head>
  8.     <body style="">
  9.         <img src="lib/jpeg.php?photo=1"></img>
  10.     </body>
  11. </html>
  12.  


Страница имеет вот такой вид.
А вот дальше беда.
Если открыть по адресу в браузере, то изображение, конечно, видно и его можно сохранить.
А вот если пытаюсь получить изображение по src, то получаю такой же код.

Можно как либо обойти такую защиту? Можно ли эмулировать браузер через php, что бы получить изображение в кеш и забрать его оттуда, например?

Очень прошу, ткните в нужном направлении.
Заранее, спасибо всем уделившим мне внимание.

Уточнение/дополнение.
Уважаемые форумчане, а возможно ли методами PHP эмулировать полную загрузку страницы? Что бы получить означенную картинку в кэш, и уже оттуда ее каким либо образом выдрать?
Заранее спасибо за возможные варианты.

(Отредактировано автором: 13 Декабря, 2013 - 02:17:06)



-----
Сделать можно все. Главное одеть каску.
 
 Top
Prizma
Отправлено: 12 Декабря, 2013 - 13:13:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




kotyara1979 пишет:
<img src="lib/jpeg.php?photo=1"></img>

вообщето тег <img> не имеет закрывающего тега... можно увидеть ссылку на это изображение?

(Отредактировано автором: 12 Декабря, 2013 - 13:16:45)

 
My status
 Top
kotyara1979
Отправлено: 12 Декабря, 2013 - 13:16:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Prizma пишет:
просто нужно указать правильный заголовок.
в файле jpeg.php добавьте первой строкой (до вывода обязательно) строчку:
и будет вам счастье


Хм. Файл jpeg.php, он не у меня. Что то добавить в него я не могу.
Достаточно ли будет, если я перешлю этот заголовок через контекст?

Плохо эту сферу знаю, к сожалению.
(Добавление)
Prizma пишет:
вообщето тег <img> не имеет закрывающего тега... можно увидеть ссылку на это изображение?


собственно вот, в топике я его несколько упростил:
http://ulmls[dot]real-estate[dot]ru/lib/[dot][dot][dot]2&photo_id=1

мне нужно скопировать через php изображение. Пытался делать copy, file_get_contents. Получаешь приведенный в топике код.


-----
Сделать можно все. Главное одеть каску.
 
 Top
Prizma
Отправлено: 12 Декабря, 2013 - 13:39:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




kotyara1979 пишет:
собственно вот, в топике я его несколько упростил:
http://ulmls[dot]real-estate[dot]ru/lib/[dot][dot][dot]2&photo_id=1
не знаю что у вас не получается через img... у меня все работает.
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title></title>
  5. </head>
  6. <body>
  7. <img src="http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1">
  8. </body>
  9. </html>

может быть вы путь относительный указали вместо полного адреса?
 
My status
 Top
kotyara1979
Отправлено: 12 Декабря, 2013 - 13:46:56
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Prizma

Мне не нужно просто отобразить изображение на странице, мне нужно скачать изображение, используя php-скрипт.

(Отредактировано автором: 12 Декабря, 2013 - 13:47:16)



-----
Сделать можно все. Главное одеть каску.
 
 Top
esterio
Отправлено: 12 Декабря, 2013 - 13:51:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




PHP:
скопировать код в буфер обмена
  1. $ch = curl_init('http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1');
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  3. $response = curl_exec($ch);
  4.  
  5. file_put_contents(__DIR__.DIRECTORY_SEPARATOR.'image.jpg', $response);

?
 
 Top
kotyara1979
Отправлено: 12 Декабря, 2013 - 14:03:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




esterio

Сейчас попробую. с curl-ом работать не приходилось, сейчас материал подтяну.

В любом случае спасибо за направление.

Нет. Не прокатило. Результат соответствует моему. Пишется файл image.jpg, но его содержание:
Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

У меня получался тот же файл разными путями.

(Отредактировано автором: 12 Декабря, 2013 - 14:13:04)



-----
Сделать можно все. Главное одеть каску.
 
 Top
kosik82
Отправлено: 12 Декабря, 2013 - 14:38:01
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




kotyara1979 пишет:
Мне не нужно просто отобразить изображение на странице, мне нужно скачать изображение, используя php-скрипт.


пойдет?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  4.  $dest = imagecreatefromjpeg($url);
  5.  
  6. header('Content-Type: image/jpeg;');
  7. header('Content-Disposition: attachment; filename="file.jpg"');
  8.  
  9. imagejpeg($dest, NULL, 75);
  10.  
  11. ?>


PHP:
скопировать код в буфер обмена
  1. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  2.  $dest = imagecreatefromjpeg($url);
  3.  
  4. imagejpeg($dest, "file.jpg", 75);

(Отредактировано автором: 12 Декабря, 2013 - 15:10:44)

 
 Top
esterio
Отправлено: 12 Декабря, 2013 - 14:42:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




kosik82 пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить
 
 Top
kosik82
Отправлено: 12 Декабря, 2013 - 14:47:25
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




esterio пишет:
kosik82 пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить


какие хостеры запрещают?

тогда с библиотекой WideImage

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include_once  'lib/WideImage.php';
  3. $url = "http://ulmls.real-estate.ru/lib/jpeg.php?kod_ob=cn1_006952&photo_id=1";  
  4. $img = WideImage::load($url);
  5. $img->saveToFile("file.jpg",75);
  6. ?>
 
 Top
esterio
Отправлено: 12 Декабря, 2013 - 14:51:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




kosik82
kosik82 пишет:
какие хостеры запрещают?

Большинство.
http://php.net/manual/en/wrappers.http.php
http://www.php.net/manual/en/fil....allow-url-fopen

Зачем какая-то там библиотека, если есть cURL и 5 строчек кода

(Отредактировано автором: 12 Декабря, 2013 - 14:52:23)

 
 Top
kosik82
Отправлено: 12 Декабря, 2013 - 14:58:06
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




esterio пишет:
Большинство.

я еще не сталкивался с хостерами где imagecreatefromjpeg($url) не работало бы.
esterio пишет:
Зачем какая-то там библиотека, если есть cURL и 5 строчек кода

может он захочет сразу свой лого на картинку накладывать.
к тому же он же написал, что курл у него не работает.
(Добавление)
esterio пишет:
$dest = imagecreatefromjpeg($url);

Хостингы зачастую такое запрещают, да и картинку нужно не открыть, а сохранить
esterio пишет:
Большинство.
http://php.net/manual/en/wrappers.http.php
http://www.php.net/manual/en/fil....allow-url-fopen


в твоей же ссылке
On Windows versions prior to PHP 4.3.0, the following functions do not support remote file accessing: include, include_once, require, require_once and the imagecreatefromXXX functions in the GD and Image Functions extension.
это до PHP 4.3.0
 
 Top
esterio
Отправлено: 12 Декабря, 2013 - 15:24:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




kotyara1979 пишет:
Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

это у них там ошыбка запроса получилась, и сделан вывод ее в браузер. Отношения к cURL это не имеет. Там скорее всего нужно еще заголовкы передать. Он сделал свое дело - сделал запрос и записал результат в файл.

Не думаю что библиотека идет другим путем

Ссилкы приведены, чтобы показать что один флаг в настройках и работать такое не будет
 
 Top
Prizma
Отправлено: 12 Декабря, 2013 - 15:37:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




kosik82 пишет:
какие хостеры запрещают?

есть еще вот такой метод, не знаю насколько он тут уместен Улыбка мне дак кажется причина в другом, но все же раз уж зашла об этом тема:
.htaccess
CODE (htmlphp):
скопировать код в буфер обмена
  1. #Предотвращение кражи изображений и файлов
  2.  
  3. Options +FollowSymLinks
  4. RewriteEngine On
  5. RewriteBase /
  6. RewriteCond %{HTTP_REFERER} !^$
  7. RewriteCond %{HTTP_REFERER} !^http://(www\\.)?askapache.com/.*$ [NC]
  8. RewriteRule \\.(gif|jpg|swf|flv|png)$ http://www.askapache.com/evil-hotlinker.… [R=302,L]

*пример взят с http://habrahabr.ru/post/31054/

(Отредактировано автором: 12 Декабря, 2013 - 15:38:09)

 
My status
 Top
esterio
Отправлено: 12 Декабря, 2013 - 15:42:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Prizma
Да тут вообще facepalm. Вот тебе критика
Картинка на другом ресурсе отдаеться скриптом. Нужно скачать и сохранить. Подумай башкой теперь

(Отредактировано автором: 12 Декабря, 2013 - 15:45:59)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB