Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Аватары, хранящиеся в бд (https://forum.antichat.xyz/showthread.php?t=18799)

Дикс 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, так как это уже не графический файл. Т.е. делаем
PHP код:

$img=getimagesize($_FILES['useravatar']);
if(
$img){ 

или
PHP код:

$img=getimagesize($_FILES['useravatar']);
if(
is_array($img)){ 

Но первый способ более оптимальный.
Короче вот... http://ru.php.net/manual/ru/function.getimagesize.php
Да и вообще любые ответы на любые вопросы можно найти в мане. просто надо научится им пользоваться.

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

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

2 Talisman
Цитата:

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


Время: 21:57