Ошибка при загрузке изображений на сайте

Тема в разделе "PHP", создана пользователем saymong, 26 дек 2014.

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

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    529
    Симпатии:
    373
    Всем доброго вечера (дня, ночи и тд)
    Столкнулся с проблемой.
    Скрипт не видит (не выводит) изображение.
    Долго описывать не буду, скриншот все объяснит
    [​IMG]
    Сама картинка на хосте присутствует и доступна.


    Помогите решить загадку...
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    safe_image.php это не картинка. Это пхп скрипт который должен отдать картинку. Открой его и смотри почему он не может отобразить- включи вывод ошибок и отключи header который отдаёт заголовок что это картинка - так сможешь увидеть что за ошибка. Может просто картинки с id=22 нету
     
    saymong нравится это.
  3. saymong

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    529
    Симпатии:
    373
    То что файл я знаю, правильно, он должен выводить картинку по заданному ID
    То что картинка есть под ID 22 это 100%
    Вывод ошибок включен, но никаких ошибок не показывает(((
    Права на папки уже выставил (для проверки) 777
    А вот и сам код файла

    Код:
    <?php
    include 'config.php';
    include 'core/classes/Database.php';
    include 'core/classes/Security.php';
    include 'core/classes/General.php';
    $__DB = new Database($_config);
    $__DB->connect();
    $__DB->select_db();
    $__Sec     = new Security($__DB);
    $__GB     = new General($__DB,$__Sec);
    if(isset($_GET['id']) && $_GET['id'] != 0){
        $__GB->getSafeImage($_GET['id']);
    }else{
        ob_clean();
        header('Content-Type: image/jpg');
        echo file_get_contents('uploads/logo.png');
    }
    ?>
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    хз. Скорее всего надо копать функцию getSafeImage - чего она не печатате картинку. Как самый простой вариант попробовать написать print_r($__GB);
    в конце и понадеяться что если были какие то ошибки они записались в какую нить переменную errors
     
    saymong нравится это.
  5. saymong

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    529
    Симпатии:
    373
    Код:
    public function getSafeImage($id)
        {
            $id = $this->__DB->escape_string($id);
            $query = $this->__DB->select('images','*','`id` = '.$id);
            $fetch = $this->__DB->fetch_assoc($query);
            $path = 'uploads/'.$fetch['path'].'/'.$fetch['new_name'];
            ob_clean();
            header('Content-Type: image/jpg');
            echo file_get_contents($path);
    
        }
    Может посмотрите))) Я уже со своими мизерными навыками все перелопатил...
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    Отличный код. По порядку
    $id = $this->__DB->escape_string($id);
    Тут берём переданный ид и экранируем его.
    $query = $this->__DB->select('images','*','`id` = '.$id);
    Тут выбираем из базы по ид. Код хороший- дырка в безопасности всегда пригодиться. Ну или по крайней мере она тут 99% что есть.
    На всякий случай :
    $id = $this->__DB->escape_string($id);
    замени на
    $id = $this->__DB->escape_string((int)$id);
    -----
    Дальше чтоб починить -
    делаешь var_dump(
    'uploads/'.$fetch['path'].'/'.$fetch['new_name'], file_exists(
    'uploads/'.$fetch['path'].'/'.$fetch['new_name']
    ));

    Первое будет путь, второе будет- есть ли файл по пути. Проверяй
     
    saymong нравится это.
  7. saymong

    saymong

    Регистр.:
    29 сен 2010
    Сообщения:
    529
    Симпатии:
    373
    Уже разобрался. Самая интересная вещь, что в файле конфигурации нужно было только добавить код
    Код:
    ob_start();
    Вот такие пирожки. Тему можно закрывать)))
     
Статус темы:
Закрыта.