Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как проверить расширение файла по заголовку?
 
 автор: Bvz   (12.11.2010 в 12:34)   письмо автору
 
 

сабж... собственно.

  Ответить  
 
 автор: Киналь   (12.11.2010 в 12:36)   письмо автору
 
   для: Bvz   (12.11.2010 в 12:34)
 

Что вы имеете в виду под заголовком?

  Ответить  
 
 автор: Trianon   (12.11.2010 в 13:04)   письмо автору
 
   для: Киналь   (12.11.2010 в 12:36)
 

а токже под расширением, и под файлом.

  Ответить  
 
 автор: Bvz   (12.11.2010 в 13:22)   письмо автору
 
   для: Trianon   (12.11.2010 в 13:04)
 

в этой теме http://softtime.ru/forum/read.php?id_forum=1&id_theme=76604&page=1
sim5 писал:
    
...
Для изображений уже существует функция, которая обеспечит более надежную проверку типа загружаемого изображения - getimagesize(), а можно еще с помощью функций GD проверить на "мусорность" файл загружаемый. Для остальных типов файлов - это проверка их по заголовку.


вот и хочу понять как это делаетс, т.е. загружается файл на сервер во временную папку прежде чем делать с ним манипуляции, хочется выяснить какое у него расширение, и как я понял по заголовку самый надежный, как это сделать?

  Ответить  
 
 автор: Красная_шляпа   (12.11.2010 в 13:24)   письмо автору
 
   для: Bvz   (12.11.2010 в 13:22)
 

$_FILES[$name]["type"]

  Ответить  
 
 автор: sim5   (12.11.2010 в 13:30)   письмо автору
 
   для: Красная_шляпа   (12.11.2010 в 13:24)
 

Это и есть заголовок файла?

  Ответить  
 
 автор: Bvz   (12.11.2010 в 13:33)   письмо автору
 
   для: sim5   (12.11.2010 в 13:30)
 

я знаю что нет, и не знаю как )))

  Ответить  
 
 автор: sim5   (12.11.2010 в 13:42)   письмо автору
 
   для: Bvz   (12.11.2010 в 13:33)
 

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

  Ответить  
 
 автор: Bvz   (12.11.2010 в 13:52)   письмо автору
 
   для: sim5   (12.11.2010 в 13:42)
 

а как это выглядит в виде кода или какие функции?

  Ответить  
 
 автор: sim5   (12.11.2010 в 14:50)   письмо автору
 
   для: Bvz   (12.11.2010 в 13:52)
 

Что выглядит, заголовки файлов? Это бинарные данные описывающие параметры файла. А уж что у вас за код будет и какие функции для этого, этого я не знаю, какие напишите, такие и будут.

  Ответить  
 
 автор: Bvz   (12.11.2010 в 15:04)   письмо автору
 
   для: sim5   (12.11.2010 в 14:50)
 

как работать с заголовками и как их посмотреть?

  Ответить  
 
 автор: sim5   (12.11.2010 в 15:08)   письмо автору
 
   для: Bvz   (12.11.2010 в 15:04)
 

Читать о типах файлов, их заголовки и структура описаны в различной литературе и в сети.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 09:31)   письмо автору
 
   для: sim5   (12.11.2010 в 15:08)
 

я правильно понял, что это можно сделать с помощью header()?

  Ответить  
 
 автор: sim5   (06.12.2010 в 10:28)   письмо автору
 
   для: Bvz   (06.12.2010 в 09:31)
 

Каким образом функция посылающая заголовки может прочитать заголовок файла?
Это нужно делать, прочитав N-байт начала файла и проанализировать эти бинарные данные, и если они соответствуют формату файла, который вы ожидаете, значит это есть искомый файл.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 11:28)   письмо автору
 
   для: sim5   (06.12.2010 в 10:28)
 

а как это сделать? какими функциями в php?

  Ответить  
 
 автор: Лена   (06.12.2010 в 11:32)   письмо автору
 
   для: Bvz   (06.12.2010 в 11:28)
 

Искать надо среди функций для работы с изображениями.
Одна функция читает первые байты изображения, вторая - читает заголовки JPEG или TIFF-файлов.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 11:42)   письмо автору
 
   для: Лена   (06.12.2010 в 11:32)
 

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

  Ответить  
 
 автор: Trianon   (06.12.2010 в 11:48)   письмо автору
 
   для: Bvz   (06.12.2010 в 11:42)
 

У файлов нет заголовков - вас ввели в заблуждение.
Вернее есть, но такие, что информацию о типе не несут.
Общего рецепта формально строгого определения типа файла по его содержимому тоже нет.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 11:58)   письмо автору
 
   для: Trianon   (06.12.2010 в 11:48)
 

я оттолкнулся от совета sim5, поэтому и интересуюсь, есть ли более безопасная и корректная проверка?

  Ответить  
 
 автор: Trianon   (06.12.2010 в 12:01)   письмо автору
 
   для: Bvz   (06.12.2010 в 11:58)
 

Есть - Опираться на знания о структуре информации для каждого конкретного типа файла.
Собственно то, о чем Вам sim5 и пытался сказать.
Но для этого нужны знания, а не функции.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 12:06)   письмо автору
 
   для: Trianon   (06.12.2010 в 12:01)
 

>Есть - Опираться на знания о структуре информации для каждого конкретного типа файла.
>Собственно то, о чем Вам sim5 и пытался сказать.
>Но для этого нужны знания, а не функции.
но чтоб получить информацию, ее каким-то образом надо получить, вот я и спрашиваю, как?

  Ответить  
 
 автор: Trianon   (06.12.2010 в 12:11)   письмо автору
 
   для: Bvz   (06.12.2010 в 12:06)
 

file_get_contents()
Для крупных файлов со сложной струкрутой - fopen fseek fread fclose

  Ответить  
 
 автор: sim5   (06.12.2010 в 12:16)   письмо автору
 
   для: Bvz   (06.12.2010 в 12:06)
 

Откройте в HEX редакторе, например, изображение, и просмотрите первые 20-40 байт кода. Вот это и есть заголовок файла изображения. Что эти байты означают для каждого типа изображения можно найти и почитать в сети. Такие заголовки имеют файлы, например, архивов, видео, звуки, исполняемые файлы и др. Таких заголовков описывающих данный файл вы не найдете в текстовом файле, в том же php-скрипте например.

  Ответить  
 
 автор: Bvz   (06.12.2010 в 12:38)   письмо автору
 
   для: sim5   (06.12.2010 в 12:16)
 

спасибо, а как php может с этим взаимодействовать?

  Ответить  
 
 автор: sim5   (06.12.2010 в 12:52)   письмо автору
 
   для: Bvz   (06.12.2010 в 12:38)
 

PHP никак, у него кроме инструментария считывания бинарных данных в определенном формате ничего нет. Не PHP должен думать и взаимодействовать, а вы. ;-)

  Ответить  
 
 автор: Bvz   (06.12.2010 в 12:59)   письмо автору
 
   для: sim5   (06.12.2010 в 12:52)
 

дайте зацепку, плиз уже и не знаю, думать я но взаимодействовать неким инструментом.
кстати посмотрел через HEX редактор как всегда jpg отличился :)

  Ответить  
 
 автор: sim5   (06.12.2010 в 13:05)   письмо автору
 
   для: Bvz   (06.12.2010 в 12:59)
 

Вы рыбачить собираетесь, знаете на какую рыбу, значит сумеете и нужную оснастку выбрать, так ведь? А чем РНР отличается от снастей рыбака, ничем - мануал, в мануале все описано, и если вы знаете, что надо делать, значит сможете найти необходимую "оснастку" и для этой "рыбалки". Учиться надо выбирать инструменты для работы. Попробуйте сами найти, без подсказки.

  Ответить  
 
 автор: Красная_шляпа   (12.11.2010 в 13:22)   письмо автору
 
   для: Bvz   (12.11.2010 в 12:34)
 

$pathinfo = pathinfo($path);
$ext = $pathinfo["extension"];

  Ответить  
 
 автор: Bvz   (06.12.2010 в 09:34)   письмо автору
 
   для: Красная_шляпа   (12.11.2010 в 13:22)
 

так можно файлу задать любое расширение и это функция его покажет

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования