Задать вопрос
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Lander, чувствую вопрос с подвохом :) Конечно знаю.
    Если вы про эту строчку
    сохранить в файл (пока задумка реализовать через tmpfile())

    То я написал предварительно)) сейчас я понял, что такой вариант не подойдет, а нужно использовать tempnam()
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Lander, ну я думал вопрос тривиальный и ответ о нем не знаю только я :) поэтому спросил без уточнения, а в итоге получилось не все так однозначно))

    А то получается что у вас любой файл после получения о нем информации удаляется с сервера.

    Это и нужно) Да и из файлов передаются только изображения, остальное текстовая информация.
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    DevMan,
    я когда-то задавался подобным вопросом и ради этого заглянул в исходники

    Я ещё в начале тернистого пути :) подобные попытки уже предпринимаю, но пока с переменным успехом. А тут на ровном месте, так "зарылся" что подумал: "лучше спросить, чем ковырять исходники"

    кстати, если вам нужны только размеры, и файлы могут быть большими, лучше пользовать не getimagesize(), а что–то вроде https://github.com/tommoor/fastimage

    Кстати, сегодня при поисках инфы по getimagesize натыкался на эту репу.

    Спасибо за рекомендацию.
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    К этому варианту я тоже склонялся. Спасибо!
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Nujabes37, вот и мне сегодня таракан в голову залез, уже несколько раз перечитывал офф.доки и на русском и на анг (хз. думал может перевели криво :)). Нигде не сказано, что файл сохраняется или что файл не сохраняется.

    С другой стороны, если mime файла можно (предположительно получить по первым трем символам (забыл как "по умному называется")), то вот как получить размеры изображения без его скачивания локально...

    Вот сижу и "меня терзают смутные сомнения" :)

    p.s. наверное "пока не попробуешь не узнаешь". Завтра попробую через него (так как по мне это самый очевидные и оптимальный вариант). А дальше виднее будет.

    p.s. вторым ответом опередили :)))
  • Сохраняет ли getimagesize() изображение на сервер?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Так, мое предположение разнесено в пух и прах :) Эт хорошо, спасибо!
    Я не просто так, на ночь глядя: "дай думаю задам странный вопрос".

    Дело в том, что прилетела задача с которой ранее не сталкивался. И как я у уже понял getimagesize() для неё не подойдет.

    Суть в том, что на сервер приходит запрос, в запросе среди прочего есть url картинки. От этого url мне нужно получить 3 вещи:
    1. Размеры (длина, ширина)
    2. Тип изображения
    3. Хэш-сумму файла

    1. - 2. нужны для проверки корректности передаваемых данных. Так как запросы достаточно однотипны и сам url будет меняться крайне-крайне редко, нужно взять hash файла, сохранить в файл (пока задумка реализовать через tmpfile()) и при повторном запросе сравнивать суммы и если они совпадают отдавать 304, что бы не загружать сервер.

    Сам файл хранить на сервере нет никакого смысла, не подскажете альтернативу getimagesize(), откуда можно выдернуть эти данные?
  • Не корректно отрабатывает try\catch. Как исправить?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    getMessage(); - выводит текст сообщения переданный в конструктор, если мне не изменяет память.
    Но вот вопрос, почему тогда я не получаю текст, который я сгенерировал в throw.

    Просто я предполагал следующее,
    Создал класс (EmailSendingFailed) -> Сгенерировал исключение (("Couldn't send email. Invalid sender address '{$recipient->email}'."))->"сломал" отправку писем->При попытке отправить письмо должно появиться сообщение:

    Couldn't send email. Invalid sender address mailmail.ru.

    и...скрипт на этом должен прекратить работу. А по итогу сообщения - нет, скрипт отработал (но при этом письмо не отправилось конечно же). Хотя я уже может "загнался" на этих исключениях и не виду очевидных вещей...
  • Что я указываю неправильно в функции filter_var(..., FILTER_VALIDATE_REGEXP, ...)?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    С третьим вариантом я почти угадал :). Спасибо!
  • Почему не срабатывает условие if else?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Рональд Макдональд, спасибо, что разжевали! Действительно использование флагов рулит :) Вот такой вариант заработал.
    let allNotChecked = true;
    for (let i = 0; i < buttonsOperations.length; i++) {
        elementEnable(firstArgument, 'input', btnResult);
        elementEnable(secondArgument, 'input', btnResult);
        elementEnable(buttonsOperations[i], 'input', btnResult);
        if (buttonsOperations[i].checked === true) {
            allNotChecked = false;
            let operator = buttonsOperations[i].getAttribute('data-operation');
            calculatorOperator(operator);
            elementDisable(btnResult);
        }
        if (allNotChecked === true) {
            output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
        }
    }
  • Почему не срабатывает условие if else?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Вы имели ввиду, что-то вроде этого?
    for (let i = 0; i < buttonsOperations.length; i++) {
        elementEnable(firstArgument, 'input', btnResult);
        elementEnable(secondArgument, 'input', btnResult);
        elementEnable(buttonsOperations[i], 'input', btnResult);
    
        let allNotChecked = true;
        if (buttonsOperations.checked === true) {
            if (allNotChecked) {
                allNotChecked = false;
                let operator = buttonsOperations[i].getAttribute('data-operation');
                calculatorOperator(operator);
                elementDisable(btnResult);
            }
        } else {
            output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
        }
    }


    Честно говоря не понял, как тут флаг вкорячить и проверить на true\fasle
  • Как решить данную задачу корректно?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, А насчет imagick надо будет попробовать, честно говоря до сегодняшнего дня я думал, что с помощью php можно делать какие-то "топорные" вещи из разряда: создать,удалить, изменить размер,конвертировать. Но все оказывается намного гибче.

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

    Спасибо за совет! Действительно можно чутка сократить код :)
  • Как решить данную задачу корректно?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Блин оказалось все крайне просто :)
    В начале файла session_start();, а перед редиректом переменные, которые указывались в качестве пути у изображений переместить в
    $_SESSION['save_origin'] = $new_name_original;
    $_SESSION['save_processed'] = $new_name_processed;


    А я голову ломал. Но спасибо за совет насчет редиректа. Не сообразил сразу.
  • Как решить данную задачу корректно?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Дмитрий, честно говоря, с изображениями я ранее не работал. Сегодня вот первый раз ковырялся и начал использовать тот функционал, который первый в гугле нашел :)

    Вы имеете ввиду, что-то вроде этого? пример отражения изображения?
  • Как решить данную задачу корректно?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Копии перестали создавать, но появилась другая проблема. Теперь не выводятся изображения. На pastebin выложил полностью скрипт и разметку.

    Поясню в скрипте, если выполняется условие:
    count($_POST) > 0 && isset($_POST['received_image'])
    , то флаг $image_correct меняет значение на true и создается два изображения (оригинальное загруженное и отзеркаленное.

    Позже по флагу я делаю проверку и вывожу (или нет) html разметку, в которой я размещаю созданные изображения. Вот пример:
    5d4af771768ba700168456.png

    Редирект (
    header('Location: /public_html/task3_updated.php');
    ) я расположил в конце условия, после отчисти памяти "imagedestroy". И когда меня редиректит на эту же страницу - блок с изображениями не показывается.

    Я пробовал убрать флаг и условие, но тогда лезут нотисы, что невозможно найти изображения по указанному пути.
    5d4af8548c495381927423.png

    Как я понял это происходит из-за того, что страница обновляется и переменные, которые я указал в src = " .. ." просто не существую, но вот как это исправить - не моуг сообразить.
  • Как реализовать функцию проверки подключения файла?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Блин а я ведь знал про работу с флагами, но чего-то уперся в то, что нужно разделить все на несколько функций. Спасибо!
  • Как реализовать функцию проверки подключения файла?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    С count хороший вариант. Спасибо!
  • Как реализовать функцию проверки подключения файла?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Все верно, но без подключенных файлов нет особого смысла полностью обрабатывать скрипт.

    Я специально указал exit; что бы работа скрипта прекращалась и хочу что бы на экране была информации про некорректно подключаемые файлы.

    Вопрос в другом, как реализовать вывод ошибки с указанием всех подключаемых файлов? То что это не сделать в рамках одной функции, я уже понял, нужно отдельно обрабатывать массив с путями, отдельно проверять на существование файла и (возможно тут я не уверен) отдельно подключать или выводить ошибку.
  • Как добавить класс пункту меню, у которого есть подменю?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Денис Янчевский, честно говоря ,сам с ним сталкивался крайне-крайне редко, но ещё ни разу не выходил победителем))

    Вадим Кот, выше подсказал классный совет, готовый класс причем с кучей плюшек в комплекте :)