Проверка файлов PHP

123 4
Wolf-izv
На сайте с 04.07.2008
Offline
49
1837

Здравствуйте!

Помогите плиз разобраться.

В файле обработки данных формы есть проверка на формат прикрепленного файла...вот часть кода:

перечисляем нужные форматы


$formats[1] = "application/msword";
$formats[2] = "text/plain";
$formats[3] = "application/docx";
$formats[4] = "application/pdf";

проверяем формат прикрепленного файла:


if ($_FILES['resume']['type']!== $formats[1])
if ($_FILES['resume']['type']!== $formats[2])
if ($_FILES['resume']['type']!== $formats[3])
if ($_FILES['resume']['type']!== $formats[4])

Все форматы проходят проверку отлично, кроме docx

Word 2007.

Предполагаю, что не правильно написана строка - $formats[3] = "application/docx";

Подскажите как лечить.

Для тех кто в теме: бонус +25% от суммы пополнения депозита мой выбор брокера (http://www.roboforex.ru/?a=cyow)
[Удален]
#1

Wolf-izv, http://www.google.ru/#hl=ru&source=hp&q=mime+type+word+2007&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=41e99dd3fca751f8

bearman добавил 26.03.2010 в 09:53

http://www.bram.us/2007/05/25/office-2007-mime-types-for-iis/

bearman добавил 26.03.2010 в 09:54

.docx,application/vnd.openxmlformats-officedocument.wordprocessingml.document

это попробуйте

T.R.O.N
На сайте с 18.05.2004
Offline
314
#2

Wolf-izv, а зачем так сложно. почему не смотреть просто расширение полученного файла??? к чему этот танец с бубном?

Ну выведите Вы через echo тип и посмотрите

T.R.O.N добавил 26.03.2010 в 09:58

bearman:
http://www.bram.us/2007/05/25/office...types-for-iis/

это при отправке с сервера. мультипарт-форма должна указывать application/msword. Хотя накой это нужно!!! Хотя, возможно, это зависит от того, стоит офис 2007 у клиента или нет

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
Wolf-izv
На сайте с 04.07.2008
Offline
49
#3
bearman:
Wolf-izv, http://www.google.ru/#hl=ru&source=hp&q=mime+type+word+2007&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=41e99dd3fca751f8

bearman добавил 26.03.2010 в 09:53
http://www.bram.us/2007/05/25/office-2007-mime-types-for-iis/

bearman добавил 26.03.2010 в 09:54
это попробуйте

Спасибо, помогло!!!

Wolf-izv, а зачем так сложно. почему не смотреть просто расширение полученного файла??? к чему этот танец с бубном?
Ну выведите Вы через echo тип и посмотрите

Ну я как бэ не спец в PHP. Делал как умел!))))

[Удален]
#4
T.R.O.N:
Хотя, возможно, это зависит от того, стоит офис 2007 у клиента или нет

это очевидно, так же как и что в 99% случаев когда человек отправляет docx, то у него стоит 2007, ведь ему больше негде его создать 🤣

T.R.O.N:
это при отправке с сервера.

разве mime-type зависит от места передачи <=> место назначения? оО

bearman добавил 26.03.2010 в 10:10

Wolf-izv:
Ну я как бэ не спец в PHP. Делал как умел!))))

молодец :)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#5
bearman:
разве mime-type зависит от места передачи <=> место назначения?

безусловно. только не от места, а от того, что у клианта, какой сервак и что на серваке.

Если у меня на компе нет офиса 7 какой контент тайп будет указан? В лучшем случае application/docx

А новый MS сервак знает полное описание типов, вроде application/vnd.openxmlformats-officedocument.wordprocessingml.document, ведь так?

PS все равно считаю, что для загрузки на сервер лучше определять именно по расширению. Меньше конфликтов.

[Удален]
#6
Wolf-izv:
проверяем формат

Ничего не имею против кода, может он и работает, но столько "if" подряд мне кажется выглядит не совсем эстетично, я бы сделал так... (имхо красивее)

<?php
$formats = array(
'application/msword',
'text/plain',
'application/pdf'
);
if ( in_array($_FILES['resume']['type'], $formats) ) {
// тра-ля-ля
// три-руб-ля
}
?>
T.R.O.N
На сайте с 18.05.2004
Offline
314
#7

wano-moroz, засрать память, нагрузить проц только для того, чтобы код смотрелся красивее. Гениально...

[Удален]
#8

T.R.O.N, если вам не хватает проца и памяти, то вы выбрали не тот язык, копайте в сторону ASM.

РНР это в первую очередь легко-поддерживаемый, масштабируемый, красивый код, остальное вторично.

(HighLoad в расчёт не берём, там действуют совершенно другие принципы, да и сам РНР используется уж очень не часто)

[Удален]
#9
T.R.O.N:
wano-moroz, засрать память, нагрузить проц только для того, чтобы код смотрелся красивее. Гениально...

хахахаххаха :))

вам противопоказано даже думать о зенд фреймоворке )

MOP1 добавил 26.03.2010 в 12:28

, там действуют совершенно другие принципы

какие же еще другие принципы... принципы везде одинаковы

[Удален]
#10
MOP1:
даже думать о зенд фреймоворке

ООП в целом.

MOP1:
принципы везде одинаковы

Да нет, в HighLoad код и его красота как раз вторичны, как это любит господин T.R.O.N, там идёт рассчёт на кеширование и разделение нагрузки между разными узлами, некоторые блоки которые на том-же РНР могут занимать 5 строчек, могут занимать 5 файлов написанных на 5-ти разных языках и даже работать на 5-ти разных серваках. (слегка утрирую, но смысл думаю примерно понятен)

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий