WedX - журнал о программировании и компьютерных науках

наследование свойств изображения при изменении размера с помощью PHP

Я пытаюсь изменить размер изображения с помощью PHP, но не могу понять, как заставить его правильно называть новое изображение. Когда я смотрю на свою таблицу изображений в моей базе данных, есть запись с идентификатором, но без имени.

Пожалуйста, дайте мне знать, если есть что-то еще, что вам нужно увидеть. На данный момент я предполагаю, что у меня нет правильных входных данных для imagecopyresampled. Когда я пытаюсь повторить имя для $formattedImage, ничего не происходит. Если я сделаю резервную копию еще на один шаг перед использованием imagejpeg и повторю имя для $blankImage, тоже ничего не произойдет.

Вот мой код.

 function chgSize($image, $width, $height){
    $name = $image["name"]; //this is displaying the file name correctly
    $temp = $image["tmp_name"];
    $imgContents = imagecreatefromstring(file_get_contents($temp));
    $blankImage = imagecreatetruecolor(100,100);
       if(imagecopyresampled($blankImage, $imgContents, 0, 0, 0, 0, 100, 100, $width, $height)){ 
           $formattedImage = imagejpeg($blankImage, $name);
           $this->saveImage($formattedImage);
       }
 }


function saveImage($image){
        $newName = $image["name"];
        move_uploaded_file($image['tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName);
        mysql_query("insert into images VALUES('null','$newName')");
        echo "Stored in: " . "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName;
  }
14.05.2012

Ответы:


1

К вашему сведению: 'null' НЕ является нулевым значением. Это строка, содержащая мир «null». Чтобы вставить фактический нуль sql, слово null должно быть указано БЕЗ кавычек, например, голый null.

Ваш код также уязвим для SQL-инъекций, плюс ваш вызов move_uploaded_file использует предоставленные пользователем данные для целевого имени файла, поэтому вы позволяете удаленному пользователю указать ЛЮБОЙ файл В ЛЮБОМ МЕСТЕ на вашем сервере, на котором он будет писать.

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

14.05.2012
  • параметр ['name'] в $_FILES предоставляется пользователем. Им легко манипулировать, и, поскольку вы используете его непосредственно в запросе, он может быть вектором инъекции. Никогда не доверяйте НИЧЕГО, отправленному со стороны клиента 14.05.2012
  • imagecopyresampled вернет значение true/false, которое вы не фиксируете. это не сделает $new_img истинным/ложным. вы также передаете дескриптор изображения GD функции сохранения, а это не так. вам нужно использовать imagejpeg($new_img, 'name_of_file') для создания JPEG. 14.05.2012
  • строки в одинарных кавычках не вставляют переменные, '$newName создаст файл с именем $newName, а не whatever.jpg. Вы, вероятно, хотите просто imagejpeg($new_img, $newName). 14.05.2012
  • $new_img против $new_image... в какой-то момент вам придется начать смотреть на то, что вы пишете, а не просто повторять ошибки на этом сайте... 14.05.2012
  • Я обновил свой код выше. Я попытался немного почистить его, но я все еще не заставляю его работать должным образом. Если вы беспокоитесь о sql-атаках, я обязательно проверил тип изображения выше. Любые другие предложения? 15.05.2012
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]