Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2011, 15:57
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

validFormat Class для PHP
Вчера заказчик позвонив мне, разочаровано выговаривал мне мол файлы которые возможны для загрузки проверяются по расширению файла, и этого не достаточно, так как говорит за небольшое время работы сайта, пользователи на загружали файлов совершенно не имеющих отношения к тем что разрешены, то-есть расширение файлов все как положено но вот не задача, внутри файлов, оказывается совершенно не тот контент, что должно быть учитывая расширение файла. На его сайте разрешено загружать лишь два формата файлов это .DOC и .DOCX которые в последствии конвертируются в PNG нужное количество страниц. Сказав ему о том что я подумаю что сделать с этим, мы закончили беседу. После разговора с ним, я сидел и раздумывал как быть. Порылся немного в нете, посмотрел на файлы изнутри, зная то что .DOCX это обычный xml упакованный в ZIP архив, но тут назрел вопрос, а как же быть с файлами .DOC ? Поковыряв файл этого формата я ничего другого не придумал, как лишь только начать разбирать его на части, выковыривая из него нужные данные которые указывают на тип документа. Формат DOC и XLS друг на друга очень похожи, та же сигнатура, те же блоки, по сути они идентичны оставалось лишь одно, вытащить из них информационный блок. Вот собственно из за этого я тут и пишу, спустя несколько часов я все же разработал класс для определения корректности файлов, и соответственно выкладываю его на обозрение.

Имя Класса: validFormat
Тип Класса: Static
Версия: 1.0.1
Требуется: PHP >= 5.2.0

Использование очень простое, подключаем класс через один из возможных видов подключения типа require, include и т.д. Затем используем его примерно так:
if ( validFormat::is_doc( 'file.doc' ) ) {
    echo "Yes it's DOC";
} else {
    echo "No, this is not DOC";
}

пока поддерживает лишь четыре формата файлов, функции для них:
validFormat::is_doc();
validFormat::is_docx();
validFormat::is_xls();
validFormat::is_xlsx();

Думаю по функциям понятно что за типы файлов. В дальнейшем я планирую расширить количество форматов, добавляя новые функции. Так что следите за версиями, выкладывать буду сюда же.

Все копирайты написанные внутри файла прошу не затирать.

С уважением! Всем приятной работы.
Вложения:
Тип файла: zip validFormat.class-1.0.1.zip (1.8 Кб, 2 просмотров)

Последний раз редактировалось devote, 14.08.2011 в 22:47.
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2011, 01:49
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

могу предложить источник для новых идей...
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2011, 08:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri Посмотреть сообщение
могу предложить источник для новых идей...
И к чему это? Ты как бы намекаешь что я выдумываю велосипед? или наоборот о том о чем я не понял видимо тебя.
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2011, 04:40
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

я просто привел пример утилиты, из которой можно черпать идеи
Ответить с цитированием
  #5 (permalink)  
Старый 16.08.2011, 09:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

аа... ну да есть такое... Идей много, времени мало =)
Ответить с цитированием
  #6 (permalink)  
Старый 23.08.2011, 23:35
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

public static function is_xls( $file ) {
		if ( ( $info = validFormat::read_doc_xls_info( $file ) ) !== false ) {
			if ( isset( $info['Workbook'] ) || isset( $info['Book'] ) ) {
				return true;
			}
		}
		return false;
	}


Одной строкой заменяется
Ответить с цитированием
  #7 (permalink)  
Старый 23.08.2011, 23:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от bugmenot
Одной строкой заменяется
я вкурсе, а пишу так по простой причине, для наглядности, когда код сжат, это больше становиться похожим на кашу.
Ответить с цитированием
  #8 (permalink)  
Старый 24.08.2011, 16:10
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от devote
когда код сжат, это больше становиться похожим на кашу.
а когда размазан, на... сами знаете что к тому же не все каши одинаково полезны и повторение - мать заикания (не следует воспринимать всерьез)
Ответить с цитированием
  #9 (permalink)  
Старый 25.08.2011, 00:52
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Народ, я написал так лишь для удобства читаемости кода, так как понимал что кину его на всеобщее обозрение... Я не против того если вам хочется иметь кашу, можете хоть весь код сделать в одну строку... Как пожелаете.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IDE для ExtJs и PHP? miha-ha ExtJS 20 23.08.2018 11:16
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Разработка движка для сайта. MySQL, PHP Shitbox2 Работа 25 13.03.2011 20:58
Дописать JS и PHP валидатор для телефона 3-3-4 conductor3 Работа 1 11.05.2010 00:01
нужна программа для этого. Чем писать? javascript или php? spam-server Серверные языки и технологии 3 27.08.2009 00:52