Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

upload файлов

Опубликовано
вопрос в следующем как проверять расширение файла на то что он должен быть изображением, не смог найти такой информации в литературе! и когда надо проверять при загрузке на сервер или при выводе на веб страницу? или в обоих случаях! спасибо.
  • Ответов 41
  • Просмотры 2,9 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Рекомендуемые сообщения

Опубликовано

QUOTE (Antonio-bobr @ Feb 15 2007, 13:10)
вопрос в следующем как проверять расширение файла на то что он должен быть изображением, не смог найти такой информации в литературе! и когда надо проверять при загрузке на сервер или при выводе на веб страницу? или в обоих случаях! спасибо.

Дайте плюс уже!! за корректность вопроса.

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

 

Подробнее на ваш "блещющий подробностями используемых технологий" вопрос не ответит.

Опубликовано
  • Автор
я не про то!!! а про защиту типа если на аплоад залили файл типа пхп, то при выведении его на сайт он тупо выполнится!!!!!!! для этого автоматом и надо мне проверять его расширение!!!!!
Опубликовано

QUOTE (Antonio-bobr @ Feb 15 2007, 15:40)
я не про то!!! а про защиту типа если на аплоад залили файл типа пхп, то при выведении его на сайт он тупо выполнится!!!!!!! для этого автоматом и надо мне проверять его расширение!!!!!

мда... приехали

Читаем литературу, смотрим код старших товарищей, хоть что-то делаем сами. Тут вам принципиально никто не ответит.

Единственный мой вам совет - откажитесь от РНР, пожалуйста.

Опубликовано

QUOTE (Antonio-bobr @ Feb 15 2007, 16:54)
мне не надо все писать, меня бы направить в нужную сторону!

||

\/

QUOTE
Единственный мой вам совет - откажитесь от РНР, пожалуйста.
Опубликовано
  • Автор
все, разобрался! и все таки почему нужно отказаться от пхп и что использовать?
Опубликовано

самый верный совет - это поглядеть "у старших товарищей" т.е. взять бесплатныю КМс и посмотреть как там это реализовано! и сделать лучше!

if (isset($_POST['submit_photo'])) {
require_once INCLUDES."photo_functions_include.php";
$error = "";
$submit_info['photo_title'] = stripinput($_POST['photo_title']);
$submit_info['photo_description'] = stripinput($_POST['photo_description']);
$submit_info['album_id'] = isNum($_POST['album_id']) ? $_POST['album_id'] : "0";
if (is_uploaded_file($_FILES['photo_pic_file']['tmp_name'])) {
$photo_types = array(".gif",".jpg",".jpeg",".png");
$photo_pic = $_FILES['photo_pic_file'];
$photo_name = strtolower(substr($photo_pic['name'], 0, strrpos($photo_pic['name'], ".")));
$photo_ext = strtolower(strrchr($photo_pic['name'],"."));
$photo_dest = PHOTOS."submissions/";
if (!preg_match("/^[-0-9A-Z_\.\[\]]+$/i", $photo_pic['name'])) {
$error = 1;
} elseif ($photo_pic['size'] > $settings['photo_max_b']){
$error = 2;
} elseif (!in_array($photo_ext, $photo_types)) {
$error = 3;
} else {
$photo_file = image_exists($photo_dest, $photo_name.$photo_ext);
move_uploaded_file($photo_pic['tmp_name'], $photo_dest.$photo_file);
chmod($photo_dest.$photo_file, 0644);
$imagefile = @getimagesize($photo_dest.$photo_file);
if ($imagefile[0] > $settings['photo_max_w'] || $imagefile[1] > $settings['photo_max_h']) {
$error = 4;
unlink($photo_dest.$photo_file);
} else {
$submit_info['photo_file'] = $photo_file;
}
}
}
opentable($locale['570']);
if (!$error) {
$result = dbquery("INSERT INTO ".$db_prefix."submissions (submit_type, submit_user, submit_datestamp, submit_criteria) VALUES ('p', '".$userdata['user_id']."', '".time()."', '".serialize($submit_info)."')");
echo "<center><br>\n".$locale['580']."<br><br>
<a href='submit.php?stype=p'>".$locale['581']."</a><br><br>
<a href='index.php'>".$locale['412']."</a><br><br>\n</center>\n";
} else {
echo "<center><br>\n".$locale['600']."<br><br>\n";
if ($error == 1) { $message .= $locale['601']; }
elseif ($error == 2) { $message .= sprintf($locale['602'], $settings['photo_max_w'], $settings['photo_max_h']); }
elseif ($error == 3) { $message .= $locale['603']; }
elseif ($error == 4) { $message .= sprintf($locale['604'], $settings['photo_max_b']); }
echo "<br><br>\n<a href='submit.php?stype=l'>".$locale['411']."</a><br><br>\n</center>\n";
}
closetable();
}

 

вот код из PHP-Fusion 6.

Опубликовано

Ну вот, наконецто стало понятно что на сервере используется PHP.

а может использовать функцию

getimagesize -- Get the size of an image

Она помимо размера возращает еще и тип картинки.

//Бян

Изменено пользователем Гость

Опубликовано

а почему бы сразу не exif_imagetype?

(PHP 4 >= 4.3.0, PHP 5)
exif_imagetype -- Determine the type of an image
Описание
int exif_imagetype ( string filename )

exif_imagetype() reads the first bytes of an image and checks its signature.

exif_imagetype() can be used to avoid calls to other exif functions with unsupported file types or in conjunction with $_SERVER['HTTP_ACCEPT'] to check whether or not the viewer is able to see a specific image in the browser. 

  • 2 недели спустя...
Опубликовано

$photo_types = array(".gif",".jpg",".jpeg",".png");

 

Тип файла проверяеться не по расширению а по mime type !

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

Опубликовано

QUOTE (MakcuM @ Mar 10 2007, 00:28)
$photo_types = array(".gif",".jpg",".jpeg",".png");

Тип файла проверяеться не по расширению а по mime type !
таким образом и провериш какой файл ты загружаеш. а то расширение я могу у себя на компе любое поставить.

Не путайте теплое с мягким.

mime types это штука используемая только в сервер-клиент взаимодействиях, котрая помагает браузеру определить типа контента (для дальнейшего правильного отображения). У автора была задача проверить тип файлов на сервере.

 

Опубликовано

QUOTE (Бян @ Mar 10 2007, 00:41)
У автора была задача проверить тип файлов на сервере.
У автора задача проверить, является ли прикреплённый файл картинкой.

 

Мой, работоспособный на 100%, способ:

// Дёргаем инфу о файле, предположительно, картинке. Собачка для подавления ошибок стоит именно потому, что предположительно.
$info=@getimagesize($_FILES['image']['tmp_name']);

// Сравниваем с маской MIME; Второй элемент массива $p ($p[1]) будет хранить расширение картинки, это может пригодится позже.
if(preg_match('{image/(.*)}is', $info['mime'], $p)) echo("Да, это картинка");
else echo("Хрень какая-то...");

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

Аккаунт

Навигация

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.