Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка аватара и проверка условий 
:(
    Опции темы
flashaa
Дата 9.7.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Подскажите пожалуйста, как проверить несколько условий при загрузке аватара.
Загружать файл получается прекрасно, использую следующий код:

Код

$uploadfile = $uploaddir."up/" .$_SESSION["user_id"].".jpg";

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 $foto=" ,`foto`=1 ";
} else {
$foto="";  
}


Как видно, у меня все картинки переименовываются в jpg, а проверки на это нет.
Вот собственно вопрос: какими функциями я могу максимально быстро проверить, является ли изображение
вообще изображением, а то вдруг там чего попало начнут грузить - дальше если изображение,
то проверка на jpg. Если jpg, то проверка на размер (должно быть не больше 100х100) и на объем файла - 100 кб.
PM MAIL   Вверх
Ashen
Дата 9.7.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 1.9.2006

Репутация: нет
Всего: нет



Взято из книги Котерова PHP5 - надеюсь не обидится.

Код

$data = $_FILES['data'];
$tmp = $data['tmp_name'];
if (@file_exists($tmp)) {
    $info = @getimagesize($_FILES['file']['tmp_name']);
    if (preg_match('{image/(.*)}is', $info['mime'], $p)) {
        $name = "$imgDir/".time().".".$p[1];
        move_uploaded_file($tmp, $name);
    } else {
        echo "Попытка добавить файл недопустимого формата!";
    }
} else {
    echo "Ошибка закачки #{$data['error']}!";
}


в этом примере есть проверка mime-типа файла.

$imgDir - папка с картинками для закачки, принцип именования файлов тоде никто не мешает изменить.
В массиве $info - почти вся нужная информация о изображении(для подробностей смотри ман).

--------------------
Хочешь помочь новичку - делай вместе с ним;Хочешь помочь старику - сделай за него;Хочешь помочь мастеру - отойди в сторону;Хочешь помочь дураку - сам дурак...
PM MAIL   Вверх
flashaa
Дата 9.7.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Cпасибо!
только вопрос:

Код

if (preg_match('{image/(.*)}is', $info['mime'], $p))
$name = "$imgDir/".time().".".$p[1];



Разве этот код работает верно для jpeg?
Просто для формата jpg mime выглядит вот так:
Код

Array ( [0] => 100 [1] => 80 [2] => 2 [3] => width="100" height="80" [bits] => 8 [channels] => 3 [mime] => image/jpeg ) 

Соответственно, файл *.jpg будет назван *.jpeg - это нормально?

Это сообщение отредактировал(а) flashaa - 9.7.2007, 11:34
PM MAIL   Вверх
Ashen
Дата 9.7.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 1.9.2006

Репутация: нет
Всего: нет



А кто мешает пришить самому расширение jpg к файлу, а jpeg использовать для проверки?
--------------------
Хочешь помочь новичку - делай вместе с ним;Хочешь помочь старику - сделай за него;Хочешь помочь мастеру - отойди в сторону;Хочешь помочь дураку - сам дурак...
PM MAIL   Вверх
Leoo
Дата 9.7.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



Можно сделать проверку на тип файла с помощью регулярных выражений. Таким образом можно вообще написать список типов закачиваемых файлов.


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Alukard
Дата 9.7.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(Leoo @  9.7.2007,  14:46 Найти цитируемый пост)
Можно сделать проверку на тип файла с помощью регулярных выражений. Таким образом можно вообще написать список типов закачиваемых файлов. 


Однако в этом случае юзер может переименовать наприме cmd.php в cmd.jpg и залить на сервак как аватарку, в то время как регулярные выражения будут тихо помалкивать...

--------------------
Блог блогу рознь: Алукардные РецептыPHP, Операционные системы, Россия & США...etc.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0769 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.