За последние 24 часа нас посетили 15826 программистов и 1547 роботов. Сейчас ищут 858 программистов ...

Сохранение изображения!

Тема в разделе "PHP для новичков", создана пользователем gun15, 30 мар 2009.

  1. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Такой воспрос как вытащить изображение или хотя бы сохранить его! Есть скрипт который генерирует геометрические фигуры по координатам но он защищен
    PHP:
    1.  if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) die("Не отдам картинку!");
    HTTP_REFERER я подменил поставил цикл но он выдет это все в тексте как отобразить сразу картинку или хотя бы сохранить картинку!!!!


    PHP:
    1.  
    2. $fp= fsockopen ("1234.ru", 80 ,$errno,$errstr,10);
    3.  
    4. $out = "GET /privet/medved/kartinka.php HTTP/1.0\r\n";    
    5. $out .= "Host: 1234.ru\r\n";
    6. $out .= "Referer: [url=http://1234.ru/]http://1234.ru/[/url]\r\n";    
    7. $out .= "User-Agent: ".$GLOBALS['user_agent']."\r\n";    
    8. $out .= "Cookie: income=1\r\n\r\n";    
    9. $out .= "Content-Type:image/jpeg\r\n";    
    10. fputs($fp,$out);    
    11.      
    12. $ans='';    
    13. while(!feof($fp))    
    14. {    
    15. $ans.=fgets($fp);    
    16. }  
    17. fclose($fp);  
    18.  
     
  2. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Почитай спецификацию HTTP протокола.Когда какие заголовки посылаются и зачем.
     
  3. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Я просил помочь а не давать спецификацию! Если не правильно дак так и надо говорить что не правильно ну или уж другой способ в строчку описать! (((
     
  4. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Ты не понимаешь как работает HTTP протокол, ты посылаешь абсурдный заголовок.
    Ты не понимаешь как взаимодействуют браузер пользователя и твой скрипт.
    Поэтому я и предложил тебе сначала прочитать спецификацию, чтоб понять как это работает.

    PHP:
    1.  
    2. <?php
    3.   $socket=fsockopen('imgl.yandex.net',80,$errno,$errstr,60) or die("Can't open socket");
    4.   $ar="GET /i/www/logo1.png HTTP/1.1
    5. Host: imgl.yandex.net
    6. User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8
    7. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    8. Accept-Language: ru,en-us;q=0.7,en;q=0.3
    9. Accept-charset:windows-1251,utf-8;q=0.7,*;q=0.7
    10. Keep-alive: 300
    11. Connection: keep-alive\r\n\r\n";
    12.  
    13. header('Content-Type: image/png');
    14. fputs($socket,$ar);
    15.  
    16.        
    17.  
    18.   while(!feof($socket))
    19.   {
    20.     $screen .= fgets($socket, 4096);
    21.   }
    22.   echo substr($screen,strpos($screen,"\r\n\r\n" )+4);
    23.   fclose($socket);
    24. ?>
    Пора уже с яндекса деньги брать за их рекламу)
     
  5. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Смотри дело то в чем!!! Картинка генерируется скриптом картинка подобная капче на dle только этот скрипт выводит геометрические фигуры!!! Ссылка прямая на картинку отсутствует!!! И еще нельзя просто посмотреть скрипт картинки
    PHP:
    1. if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) die("Не отдам картинку!");
     
  6. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    и что?
     
  7. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    дак то что гет запрос GET /privet/medved/kartinka.php идет к скрипту а не к картинке!!!! Я только что переделал гет запрос на свой пример и нихрена не работает!
     
  8. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    Не ругайся и не нервничай, нервные клетки не восстанавливаться

    Пойми что делают эти две строчки и поймешь почему не работает.
    PHP:
    1.  
    2. header('Content-Type: image/png');
    3. echo substr($screen,strpos($screen,"\r\n\r\n" )+4);
    4.  
     
  9. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Да я не нервничаю просто я уже себе весь мозг вы....ал!!!! уже 3 день мучаюсь!!! скажи как!!!
     
  10. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    1я строчка говорит браузеру что ему передают png картинку
    2я отрезает из данных для вывода ответ сервера.

    У тебя формат jpeg, поэтому надо поменять на header('Content-Type: image/jpeg');
     
  11. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Я это сделал сразу же!!!! НО все равно не работает!!!!! Вот хз что делать!


    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\1234.ru\www\1.php:1) in Z:\home\1234.ru\www\1.php on line 14

    Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\1234.ru\www\1.php on line 21


    Вот что мне говорит денвер!!!
     
  12. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Есть еще какой-то вывод перед header. А этого быть не должно.
    Возможно UTF-8 с BOM => Дурацкие спецсимволы вначале.