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

Форум PHP

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

 

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

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

тема: Код определения типа файла - где ошибка?
 
 автор: Владимир22   (21.09.2007 в 19:05)   письмо автору
 
 

Загружается файл('do'). И надо его проверить - RTFный он или нет.
Пишу так:

$mds = $_FILES['do']['type']; 
$ftp2 = substr($mds, 0, 4);
if($ftp2 != "text"){
print "<script language='JavaScript'>
        window.alert('Можно грузить только формат «rtf»! Укажите правильный файл !');</script>";
        exit();}

У некоторых пользователей проходит, у некоторых - нет. И уменя не получается - загружаю нормальный RTF-файл, а этот код его не пускает.
Кто подскажет в чём ошибка или как можно наверняка другим способом проверить тип RTF-файла ??? (по расширению - не предлагать) Может завит о версий Wordа при переводе doc в RTF? или сессии или ещё что? HELP!

   
 
 автор: sim5   (21.09.2007 в 19:44)   письмо автору
 
   для: Владимир22   (21.09.2007 в 19:05)
 

А что вы желаете получить здесь substr($mds, 0, 4) ?
Если файл RTF, то $_FILES['do']['type'] может вернуть вам следующее application/msword

   
 
 автор: Владимир22   (11.02.2008 в 00:11)   письмо автору
 
   для: sim5   (21.09.2007 в 19:44)
 

Уже давно работает этот код,
$md = $_FILES['do']['type'];
if($md != "application/msword"){
#if(eregi("word",$md)){
print "<script language='JavaScript'>
        window.alert('Возможна загрузка документов только в формате «rtf»! ');</script>";
        exit();}

НО... у кого проходит файл, а у кого - нет. Есть юзеры, которые не могут загрузить файл. Сам пробовал - не пускает. Может ещё от версии Worda зависит???
В чём может быть проблема? HELP!

   
 
 автор: sim5   (11.02.2008 в 06:34)   письмо автору
 
   для: Владимир22   (11.02.2008 в 00:11)
 

Нет, Ворд тут не при чем. Не только Ворд может сохранять файлы в этом формате, но и другие редакторы, а они сохраняют соответствующий заголовок и соответствующее расширение. В самой же системе RTF регистрируется как application/msword и application/rtf, и что вы получите скорее зависит от браузера отославшего форму.
Но я могу изменить рсширение любого файла на .rtf и отправить, и $_FILES['do']['type'] его "честно проглотит".

   
 
 автор: vitali   (11.02.2008 в 16:58)   письмо автору
 
   для: sim5   (11.02.2008 в 06:34)
 

Как написано в документации $_FILES[do][type] мимо-тип файла вам формирует браузер, поэтому без дополнительных проверок вам не обойтись.
Поэтому см. mime_content_type() -- Определение MIME Content-type файла, или используйте Unix-совую ф-цию file()

   
 
 автор: sim5   (11.02.2008 в 17:10)   письмо автору
 
   для: vitali   (11.02.2008 в 16:58)
 

Вот именно - мимо-типа :))

   
Rambler's Top100
вверх

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