Просмотр полной версии : Аватары, хранящиеся в бд
Как лучше сделать - закачивать аватары в спецпапку форума или сохранять их в базе?
Попробовал сделать форму
<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:
1) хронить аватары в базе все равно что на катерах спортивных в канистрах нефть через континенты перевозить =))
2) все данные из полей типа file пишутся не в $_POST а в $_FILES, т.е.
$useravatar = $_FILES['useravatar'];
пасиба :)
а я всегда юзаю длинные прототипы $_post или гет - $http_get_vars['']
привык уже к ним. мне стоит перейти на короткие, как у тебя?
И ещё вопрос:
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?
Talisman
08.05.2006, 21:47
пасиба :)
а я всегда юзаю длинные прототипы $_post или гет - $http_get_vars['']
привык уже к ним. мне стоит перейти на короткие, как у тебя?
И ещё вопрос:
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?
ну... положим не только на эти, их можно еще и зашифровать... вообщем поле для экспериментов.
смотря как ты используешь эти файлы - лучше перестраховаться, и отсеять
если я буду заливать авики в папку, мудро ли будет затем прочитать содержимое авы
в массив и проверить его на наличие текста <? или <script ?
Для этого есть специальная функция по проверке содержимого файла. Не помню правда какая.
лол, ребята. Вы извените, не хочу никого обидеть но действительно смешно =)
Делаешь
$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
вообщем поле для экспериментов.
нет слова "вообщем". Есть слово "вообще" и "в общем" =)) Кстати, сам долго путал =))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot