[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Аватар пользователя
exotica
Доброго времени суток!. Решил что просто текст выглядит не очень презентабельно, и решил добавить пользователям аватарки.
Логику процесса представил себе так:
  • Есть форма загрузки фото-файла
  • Пользователь загружает фотографию со своего ПК
  • Скрипт проверяет соответсвие расширению .jpeg / .jpg / .png , если не одно из трех, возвращает ошибку и форму. Если все ок, продолжаем.
  • Сжимаем фото сохраняя пропорции чтобы оно не выходило за параметры 1024x720 px
  • Сохраняем оригинальное изображение в каталог uploads, и сохраняем ссылку на него в БД
  • Сжимаем фотографию сохраняя пропорции, для корректного отображения на странице пользователя, и сохраняем путь в БД.
  • Далее при авторизации заношу 2 Путь в $_SESSION['avatar'] и он отображается на странице как фото. А 1 Путь записываю в $_SESSION['avatar_full'] и он будет подгружен при нажатии на картинку пользователя, будет показан полный масштаб.

Вот как то так я себе представляю. Скажите если серьезную ошибку допускаю где либо.




_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
DedMorozzz
Цитата
Скрипт проверяет соответсвие расширению .jpeg / .jpg / .png , если не одно из трех, возвращает ошибку и форму. Если все ок, продолжаем.

А что если тут будет не картинка? А просто файл с расширением png? Проверяй ещё на "картинку"
Цитата

Сохраняем оригинальное изображение в каталог uploads, и сохраняем ссылку на него в БД

тут пару моментов. Во первых - зачем 2 раза пережимать, у тебя пережим дважды делается
И файл необходимо переименовать.
Так же разные размеры файла лучше хранить просто в разных папках, с одинаковым названием исходного файла. И в БД хранить лишь название
А папки с аватарками будут вида: /img/(original/big/medium/small)/image_name.png
ну или big,small ... назвать как 200, 75... тут как уж удобнее

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
exotica
Цитата
Во первых - зачем 2 раза пережимать, у тебя пережим дважды делается

А вдруг пользователь загрузит 2500х1800 px ?? Как вариант сделать будет сделать такую папку?:

user_pic
- original
- normal
- ava
- small

То есть в original сохраняется собственно оригинал загруженный пользователем, В normal загружается 1000х700 (урезка), в ava будет то что на аватарку, и в small пойдет мини-изображение

Т.е фото урежется 3 раза

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
DedMorozzz
Цитата (exotica @ 25.06.2013 - 11:13)

Т.е фото урежется 3 раза

ну да. Всё верно. Сколько размеров авок надо, на столько размеров и резать.

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

Цитата
А вдруг пользователь загрузит 2500х1800 px ?? Как вариант сделать будет сделать такую папку?

Если беспокоишься о месте - ограничь максимальный вес. И это таки надо всё равно сделать. Хотя бы 5 мб. Ибо загрузят те снимок со спутника, размером в несколько гигов...

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
exotica
Ок про ограничение веса понял, спасибо.
т.е
  • Загружаем фото, проверяем расширение, тип и максимальный "вес"
  • Сжимаем сразу во все нужные размеры
  • Сохраняем с одним именем в разные каталоги.

Такс, тогда сразу возникает вопросик, нужно же сгенерировать имя, уникальное для каждой загруженной фотографии. Признаюсь сразу - еще не гуглил на эту тему, но спрошу, мало ли есть материал в запасе)

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
DedMorozzz
имя...да рандомная строка + время. Но сам понимаешь, вариантов может быть масса.
К примеру я использую именно время+строка. В случае если в 1 сек добавили несколько юзеров 1 фотку

Цитата (exotica @ 25.06.2013 - 11:56)
    Загружаем фото, проверяем расширение, тип и максимальный "вес"

повторюсь, а если там расширение png, но там будет не картинка?
Т.е. aaa.exe.png

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
exotica
Цитата
повторюсь, а если там расширение png, но там будет не картинка?
Т.е. aaa.exe.png

а как это мы можем проверить?? в голову влез только preg_match может есть другие варианты? или регулярка самый подходящий?

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
DedMorozzz
А каким образом ты проверишь регуляркой, картинка ли это?
Необходимо проверять не название файла, а тип файла.
А проверить можно по разному, но к примеру так http://www.php.net/manual/en/function.getimagesize.php

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Splaer
$_FILES['uploadfile']['type']
проверить на соответствие с image/gif, image/png, image/jpeg

Правда, насколько я знаю, с точки зрения безопасности это не лучший вариант.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.