Определение типа файла

kvf77

Red Devil
Определение типа файла

на сайте есть возможность пользователям загружать разные типы файлов, в том числе doc, txt, xls - как проверить, что пользователь загрузил именно экселевский, pdf файл и так далее? потому что с картинками можно средствами php это сделать, а с другими файлами. А то пользователь ведь может загрузить скажем html с джавовым скриптом запузырить или еще что и при выводе заломать сайт. как предотвратить подобные вещи?
 

Demiurg

Guest
в общем случае никак.

ps а как яваскриптом сайт можно сломать ?
 

kvf77

Red Devil
ну я условно сказал - просто я уже блин один раз сталкнулся с хостингом, где они запузырили на обработку php все, включая обычные Html - сам понимаешь - чел грузит html, а хостер прописал все как php файл - получить можно все, что угодно - конечно такое дебильство редкость - но хочется себя обезопасить
и потом джава может мне не навредить, а другим пользователям - мало ли какой код они загрузят
 

Demiurg

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

-~{}~ 01.03.04 14:27:

а вообще самый простой способ:
$_FILES['userfile']['type']
The mime type of the file, if the browser provided this information. An example would be "image/gif".
 

LAMborginy

Guest
PHP:
function mime($file) {
	$fp = fsockopen($_SERVER["HTTP_HOST"],80);
	if ($fp) {
		fputs($fp,"HEAD ".$file." HTTP/1.0\r\n\r\n");
		while (!feof($fp)) {
			$str = fgets($fp,1024);
			if (strstr($str,"Content-Type: ")) {
				$tmp = preg_split("% |;%",$str);
				return $tmp[1];
			}
		}
	} else {
		echo "Ошибка";
	}
}
 

IntenT

SkyDiver
LAMborginy
А ты знаешь на чем основано присвоение тому или иному файлу mime-типа??
 

camka

не самка
[m]mime_content_type[/m]


The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file. While this is not a bullet proof approach the heuristics used do a very good job.
 

Demiurg

Guest
я его уже назвал, он не точнее этого, однако не делает бесполезных действий.
 

LAMborginy

Guest
а.. извеняюсь.. не углядел..
эта функция писалась ещё когда не было 4 PHP :)
 
Сверху