Загрузить изображение и эскиз через PHP - PullRequest
0 голосов
/ 19 августа 2011

Так что мне нужен очень простой скрипт для изменения размера изображения и загрузки эскиза в PHP. Пожалуйста, не рекомендуйте библиотеку, потому что я предпочел бы легко редактировать и учиться на ней.

Я написал небольшой PHP-скрипт самостоятельно, чтобы загрузить изображение и присвоить ему имя после его идентификатора в базе данных, и намеревался сделать большой палец таким же простым, как добавление большого пальца в конец имени (например, 123thumb. JPG), но я вроде как испортил его, пытаясь работать с миниатюрами.

Вот как это выглядело:

mysql_query('
    INSERT INTO art (
        artist,
        title,
        extension)
    VALUES (
        1,
        "Penguins",
        "'.end(explode('.',$_FILES['art']['name'])).'")') ;
move_uploaded_file($_FILES['art']['tmp_name'],'images/'.mysql_insert_id()..end(explode('.',$_FILES['art']['name']))

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Помимо всех потенциальных возможностей вашего скрипта (см. Другой ответ), эта страница может быть очень полезна для обучения вас, как изменить размер изображения, чтобы получить миниатюру. Для изменения размера изображения вам понадобится библиотека типа GD (встроенная в PHP).

http://salman -w.blogspot.com / 2008/10 / изменение размеров-изображения, используя-phpgd-library.html

(нашел в другом ТАК вопрос.)

РЕДАКТИРОВАТЬ: И, конечно, не забудьте руководство по PHP. http://php.net/manual/en/book.image.php

0 голосов
/ 19 августа 2011

Плохой плохой дизайн.1. Отсутствие проверки ошибок в запросе и использования необработанных данных, предоставленных пользователем, в запросе, что приводит к уязвимости внедрения в SQL.2. Использование необработанных пользовательских имен файлов для хранения файлов, даже если к нему добавлен идентификатор базы данных.3. Слепо предполагая, что запрос вставки работает, так что msyql_insert_id может ничего не возвращать.3. слепо предполагая, что команда перемещения работает.

Лучшая / более безопасная методология:

if ($_FILES['art']['error'] !== UPLOAD_ERR_OK) {
   die("Upload failed with error code " . $_FILES['art']['error']);
}

$filename = mysql_real_escape_string(basename($_FILES['art']['name']));
mysql_query("INSERT .... VALUES (1, 'Penguins', '$filename', ...)") or die(mysql_error());

move_uploaded_files(...) or die("Failed to move file");

Существует больше / лучшая проверка / обработка ошибок, которая может быть выполнена, но это скелетчто-то гораздо безопаснее / надежнее, чем ваша версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...