PDA

Просмотр полной версии : Аватары, хранящиеся в бд


Дикс
08.05.2006, 18:48
Как лучше сделать - закачивать аватары в спецпапку форума или сохранять их в базе?
Попробовал сделать форму
<form action="блаблабла" method='POST' enctype="multipart/form-data" >
<input type='file' name='useravatar' /></td>

форма отправляет данные, затем

$useravatar = $HTTP_POST_VARS['useravatar']; // line 27
и значение просто добавляется в БД

Но при выполнении скрипта вываливается:

Notice: Undefined index: useravatar in z:\home\localhost\www\dronix6\register.php on line 27

и в базу ничего не добавляется.

Столбец в базе:
u_avatar mediumblob BINARY
значение для юзера:
[BLOB - 0 Bytes]

Почему андефайнед индекс и может стоит просто сохранять их в папку? :confused:

Trinux
08.05.2006, 20:07
1) хронить аватары в базе все равно что на катерах спортивных в канистрах нефть через континенты перевозить =))
2) все данные из полей типа file пишутся не в $_POST а в $_FILES, т.е.
$useravatar = $_FILES['useravatar'];

Дикс
08.05.2006, 20:20
пасиба :)
а я всегда юзаю длинные прототипы $_post или гет - $http_get_vars['']
привык уже к ним. мне стоит перейти на короткие, как у тебя?

И ещё вопрос:
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?

Talisman
08.05.2006, 21:47
пасиба :)
а я всегда юзаю длинные прототипы $_post или гет - $http_get_vars['']
привык уже к ним. мне стоит перейти на короткие, как у тебя?

И ещё вопрос:
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?
ну... положим не только на эти, их можно еще и зашифровать... вообщем поле для экспериментов.
смотря как ты используешь эти файлы - лучше перестраховаться, и отсеять

virgoz
08.05.2006, 22:22
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?
Для этого есть специальная функция по проверке содержимого файла. Не помню правда какая.

Trinux
09.05.2006, 04:04
лол, ребята. Вы извените, не хочу никого обидеть но действительно смешно =)
Делаешь
$img=getimagesize($_FILES['useravatar']);
и получаешь массив в переменную $img только в том случае, если файл является картинкой. В массив пишется инфа о файле. Графический тип, глубина цвета, если не изменяет память, размеры, атрибуты для тега <img> и другое. Если в нем присутствует что-то типа <? или <script то функция вернет 0, так как это уже не графический файл. Т.е. делаем
$img=getimagesize($_FILES['useravatar']);
if($img){
или
$img=getimagesize($_FILES['useravatar']);
if(is_array($img)){
Но первый способ более оптимальный.
Короче вот... http://ru.php.net/manual/ru/function.getimagesize.php
Да и вообще любые ответы на любые вопросы можно найти в мане. просто надо научится им пользоваться.

Насчет $_POST и $HTTP_POST_VARS... насколько я знаю - разницы нет. Переменные автоматом создаются и теб и другие. Но я привык к короткому обозначению. Он более удобный и короткий и не мусорит код.

А читать файл в массив дабы проверить его на наличие подобных символов вообще глупо. Подумай сам, как эти скрипты будут исполняться, если ты файл заливаешь к себе на сервак? Если, конечно, у тебя апачу или другому веб-серверу не указано, что он должен запускать php для обработки графики =)

2 Talisman
вообщем поле для экспериментов.
нет слова "вообщем". Есть слово "вообще" и "в общем" =)) Кстати, сам долго путал =))