![]() |
upload .PNG on the server
скрипт на PHP.
загружает файлы на сервер. код: Код:
elseif ( при чём из университета я могла залить, а из библиотеки нет |
А разве здесь не "!=" вместо "!==" писать надо??? Вроде в $_FILES['userfile']['type'] содержится как раз текст типа image/jpeg, то есть проверку надо производит с помощью знака "не равно", а не "не идентично", хотя вообщем то это наверно всё равно, в любом случае везде только строки, то есть переменная и строка одного типа, то есть остаётся только равно или не равно проверить......
Хотя если Цитата:
Или универ и библиотека имеется в виду два сервера-и на каждом данный код лежит?? |
Дело в том, что type означивается не сервером, но бродилкой в которой был означен диалог отправки файла. Т.о. это задача броузера. Вот тут и могут быть такого рода заморочки - с одного аплоадится, а с другого - нет. Рекомендую перейти на серверное определение типа файла: string mime_content_type (string filename).
P.S. Да, и применять эту функцию нужно к временному файлу - $_FILES['userfile']['tmpname'][$i]. А то другая информация - фикция. |
vadimiron
в данном случае "!==" придает больше уверености мне :) и это совершенно не влияет на работу скрипта. потому как все остальные типы указанные в скрипте определяются корректно. Prisoner это именно то, что я сама подумала :) и про браузеры и про функцию mime_content_type спасибо, что просвятил |
Prisoner
неудача. сервер не сконфигурирован использовать mime_content_type на локалке я попыталась его установить, но оказалось, что он вобще кроме gif ничего не распознаёт... как проблему решить-то? |
Странно. Это стандартное расширение. Там заморочки с нахождением magic.mime. Можно финт ушами: есть переменная $http_response_header которая означивается после операции fopen и которую можно разобрать:
Код:
function GetHeaders($URL) |
Prisoner
да дело в том, что на сервере mime_content_type не работает. скорее всего там не сконфигурирован php.ini кстати, я создала текстовый документ, непечатала тем пару строк переименовала в pic.png и ($_FILES['userfile']['type'][$i] !== 'image/png') нормально его опознал. а реальнуй рисунок не хочет... может png надо как-то по другому опознавать? |
В функции вызов mime_content_type - это страховка. Основной упор сделан на разбор заголовочной информации. И вот если после разбора этой инфы по типу ничего нет, то вызывается страховка. Попробуй, вдруг заработает? Может быть при открытии файлв его тип определяется иначе, не как функцией mime_content_type (хоть и маловероятно). В любом случае можно только посоветовать пнуть серверодержателя - хостера или кто там у вас в универе... это самое верное решение, остальное - финты ушами.
|
Prisoner
sorry, я невнимательно посмотрела код... мне тут вобщем нужно только пару строк: function GetHeaders($URL) { $Headers = array(); $F = @fopen ($URL, 'r'); @fclose($F); $Headers['Error'] = array(); //var_dump($http_response_header); - не понимаю предназначаение этой строки foreach($http_response_header as $HItem) { if (strpos($HItem, 'Content-Type: ') !== false) $Headers['Mime'] = substr($HItem, 14); } if (!isset($Headers['Mime'])) $Headers['Mime'] = ''; else { if (!preg_match('/([\w]+\/[\w]+)/i', $Headers['Mime'], $Match)) $Headers['Mime'] = @mime_content_type($URL); - это строка тоже врядли нужна, если эта функция всё рано отключена else $Headers['Mime'] = $Match[1]; } return $Headers; } |
Prisoner
ладно.. попрошу что б включили функцию... |
На случай если тебе не пойдут на встречу можно попробовать такой код:
Код:
function GetMIME($File) |
Как понимаю необходимо заливать на сервер файлы определенного типа.
Так вот, советую не напрягать админа с включением сторонней библиотеки, так как вам это кроме экономии 3 строк кода ничего не даст, а админу и так есть чем занятся :) 1. Берете ОРИГИНАЛЬНОЕ имя файла и выдираете из него расширение. 2. по расширению и смотрите на разрешенные :) Предусматривая вопросы сразу же отвечаю - даже и mime модулем, я могу вам послать txt как архив. Он хака это вас не спасет - закаченный под неправильным типом файл, сервером так же и отдается. Закаченный как txt скрипт php, будет отдан как текст, а не выполнен сервером. Тут хак так же исключается. Если файл прислан под видом картинки, пустите на него getimagesize() - и получите правильный ответ, картинка ли это или нет, и что за картинка. |
Ginger
Цитата:
|
Stek
Цитата:
Цитата:
т.е. предлагаете изменить скрипт в принципе? ну ок. остаётся только согласиться |
Imperio
да там возможно нужно менять расположение файла magic на самом сервере... |
на вскидку
PHP код:
|
Время: 11:10. |
Время: 11:10.
© OSzone.net 2001-