В ишаке не отображаются картинки.

Тема в разделе "PHP", создана пользователем 2pick, 7 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. 2pick

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    Странная ситуация...
    Через .htaccess делаю реврайт, чтоб небыло видно что картинку отображает скрипт. Но в фаерфоксе все работает, а вот в эксплорере (не везде) картинки не отображаются, при этом через html только не отображается, а если напрямую смотреть то все нормально. Где может быть баг?

    <?

    $name = urldecode($_GET['name']);
    $img_name='./folder/'.$name;
    $logo_path = "./folder/logo/".$SERVER_NAME.".png";
    $logo = imagecreatefrompng($logo_path);

    if (isset($img_name))
    {
    $info = @getimagesize($img_name); // получение информации о изображении
    $ext = @$info[2]; // тип изображения
    $header = @$info['mime']; // правильный заголовок для использования в header()

    switch($ext) // выбор способа открытия по типу изображения
    {
    case 1: // GIF
    {
    $im = @imagecreatefromgif($img_name); // попытка открыть
    if ($im) // Открылось или нет
    {
    header("Content-type: " . $header); // отправляем заголовок
    imagecopy ($im,$logo,1,1,0,0,100,28);
    imagegif($im); // выводим изображение в браузер
    }
    break;
    }

    case 2: // JPG
    {
    $im = @imagecreatefromjpeg($img_name);
    if ($im)
    {
    header("Content-type: " . $header);
    imagecopy ($im,$logo,1,1,0,0,100,28);
    imagejpeg($im);
    }
    break;
    }

    case 3: // PNG
    {
    $im = @imagecreatefrompng($img_name);
    if ($im)
    {
    header("Content-type: " . $header);
    imagecopy ($im,$logo,1,1,0,0,100,28);
    imagepng($im);
    }
    break;
    }

    case 6: // BMP
    {
    $im = @imagecreatefromwbmp($img_name);
    if ($im)
    {
    header("Content-type: " . $header);
    imagecopy ($im,$logo,1,1,0,0,100,28);
    imagewbmp($im);
    }
    break;
    }
    default: // если ничего не подошло
    {
    $f = @file($img_name); // пробуем считать файл
    if ($f) // если файл считался
    {
    echo implode("", $f); // выводим массив строкой
    }
    break;
    }
    }
    }
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    А где сам html то?

    Также может быть прикол в mime типах...
     
  3. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Покажи готовый HTML...
    А так - единственный совет - старайся использовать пути, относительно корня сайта или абсолютные пути.

    Например, mod_rewrite в .htaccess у тебя ругулирует ЧПУ.
    Скажем, пути на сайте получаются такие:
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    ...

    Так что если в HTML указать <img src="img/logo.jpg">, то браузер будет искать так:
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

    А если <img src="/img/logo.jpg">, то:
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

    Т.е. суть в том, что нужно использовать пути относительно корня сайта,а не относительно текущей папки.

    Ещё можно указывать сразу абсолюьные пути. Например <img src="http://site/img/logo.jpg"> Но это не очень удобно при разработке и при переносе.
     
  4. 2pick

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    Сайт
    Перейти по ссылке

    Добавлено через 2 минуты
    С путями там нормально все.
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Я тыкнул несколько ссылок - всё на месте.
    Дай конкретный линк где не отображаются картинки.
     
  6. 2pick

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    я же грю - у некоторых отображается, а у некоторых нет...
    От чего зависит не знаю. Картинки сразу же на главной не видно.
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Всё на месте.
    Добавь в свой скрипт чтоб он вёл лог запросов. Потыкай и проверяй лог.
    И загляни в лог апача, посмотри какие там урлы.

    Добавлено через 1 минуту
    ЗЫ ты случаем какой-то антилич не используешь (проверка по реферу)?
     
    2pick нравится это.
  8. 2pick

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    Перейти по ссылке

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

    Вот че апач в ошибках пишет, причем это весь лог ошибок за день... а картинок там явно больше и народу много жалуется
    [Tue Apr 07 00:01:03 2009] [warn] mod_fcgid: read data timeout in 40 seconds
    [Tue Apr 07 00:01:03 2009] [error] [client 194.186.55.206] Premature end of script headers: index.php
    [Tue Apr 07 00:01:19 2009] [warn] mod_fcgid: read data timeout in 40 seconds
    [Tue Apr 07 00:01:19 2009] [error] [client 194.186.55.206] Premature end of script headers: index.php
    [Tue Apr 07 08:37:17 2009] [warn] mod_fcgid: Read data error, fastcgi server has close connection
    [Tue Apr 07 08:37:17 2009] [error] [client 212.248.1.26] Premature end of script headers: pic.php, referer: Перейти по ссылке
    [Tue Apr 07 08:37:42 2009] [warn] mod_fcgid: Read data error, fastcgi server has close connection
    [Tue Apr 07 08:37:42 2009] [error] [client 212.248.1.26] Premature end of script headers: pic.php, referer: Перейти по ссылке
    [Tue Apr 07 13:56:04 2009] [warn] mod_fcgid: read data timeout in 40 seconds
    [Tue Apr 07 13:56:04 2009] [error] [client 212.152.40.83] Premature end of script headers: index.php

    Добавлено через 5 минут
    Нет. Ничего такого нет.
     
  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    1. ты не ответил про антилич/проверку реферера
    2. "Premature end of script headers: pic.php" - у тебя отваливается скрипт, который отдаёт картинку (если я правильно понял название)
     
  10. 2pick

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    про антилич ответил... см. выше.
    А почему он отваливается?

    Добавлено через 12 минут
    Кажись нашел баг :D
    $SERVER_NAME - вот где баг был...
    Картинка была залита c таким именем
    site.ru.png
    а при запросе через Перейти по ссылке
    был запрос на картинку Перейти по ссылке
    в результате перед хидерсами выдавался баг от пхп. И ишак обработать не мог. (походу не только ишак). А я запрос делал всегда без ввв - вот и глюк был.
    Ждем отзывов у кого глюки были

    Добавлено через 14 минут
    вот решение -
    $srv=eregi_replace("www.","",strtolower($SERVER_NAME));
    $logo_path = "./folder/logo/".$srv.".png";
     
Статус темы:
Закрыта.