2014-09-30 4 views
-1

Я создаю свой собственный сайт по адресу http://harrisonprograms.com, и у меня есть проблема на странице профиля.PHP, HTML проверить, является ли файл изображением

Проблема заключается в том, что я создал PHP-скрипт, который будет загружать изображение на сервер, например, каталог изображений может быть Users/whatevertheusername/imagename.png, а затем добавить ссылку на строку в MySQL в строке MySQL пользователей , Однако до того, как скрипт выполняет это он проверяет, если файл загружен в файл изображения с помощью функции подстроки, я не могу отправить изображение, потому что моя репутация не достаточно высока, так вот код в тексте

if(isset($_POST['SUBMITFILE2'])){ 

$imageName = $_FILES['UPLFILE2']['name']; 
$imageData = file_get_contents($_FILES['UPLFILE2']['tmp_name']); 
$imageType = $_FILES['UPLFILE2']['type']; 

//VALIDATE WHETHER FILE IS AN IMAGE OR NOT 
if(substr("$imageName", 0, 5) == 'image'){ 

вещь, которую я не могу понять, она используется, чтобы работать и проверять, был ли файл образным или нет, но теперь он перестает работать, и я не знаю почему.

+0

5 строк кода; это оно? Добавьте отчет об ошибках в начало файла (ов) сразу после открытия тега < 'error_reporting (E_ALL); ini_set ('display_errors', 1); 'Посмотрите, дает ли оно что-либо –

+0

, ваш' substr() 'actully использует строку« $ imageName », а не переменную. и даже если бы название изображения не помогло - вы говорите, что это действовало однажды? – 2014-09-30 20:42:09

+0

Я не уверен, что я четко понимаю вашу проблему, но вы проверяете, является ли загруженный файл изображением, проверяя его имя? Так что, если я загружу файл под названием 'imagename.pdf', он также пройдет проверку? – marian0

ответ

1

Так тип проверки файлов по имени или расширения не хорошо, потому что вы можете легко изменить его простой функцией remane. Вы можете проверить, является ли загруженный файл изображением, например, mime type. В php у вас есть функция mime_content_type(). Пример использования:

$imageMimeTypes = array(
    'image/png', 
    'image/gif', 
    'image/jpeg'); 

$fileMimeType = mime_content_type($_FILES['UPLFILE2']['tmp_name']); 

if (in_array($fileMimeType, $imageMimeTypes)) { 
    //passed validation 
} 

Конечно, вы можете определить больше типов изображений mime.

+0

Спасибо, мариан, это было очень полезно. Помогло определить, был ли файл образным или нет, и теперь я могу добавить больше типов изображений, если мне нравится, я также кое-что узнал о загрузке файлов. –

0

уверен, вы можете найти ответ на свой вопрос здесь: php check file extension in upload form

$allowed = array('gif','png' ,'jpg'); //extension allowed 
$filename = $_FILES['video_file']['name']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
if(!in_array($ext,$allowed)) { 
    echo 'error'; 
}else{ 
//your extra code... 
} 
+0

Не видите свою точку зрения, если он хочет, чтобы только формат формата изображения был загружен, это будет работать нормально. Если вы возьмете .txt или .exe и измените расширение на .png, убедитесь, что оно пройдет, но это будет просто сломанным png. Теперь, если вы можете войти на сервер, замените расширение на .exe, а затем запустите его, это еще одна история! –

+0

Я попробую это за секунду, но он говорит, что мой входной файл не определен, и я знаю почему. –

Смежные вопросы