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

Форум PHP

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

 

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

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

тема: Загрузка файлов на сервер.
 
 автор: QWPLJ   (11.07.2006 в 16:45)   письмо автору
 
 

Люди, подскажите, плиз, следующее при загрузке файлов с компьютера пользователя на сервер:
1) Как проверить имеются ли в имени загружаемого файла русские символы?
2) Как запретить загрузку на сервер определённых типов файлов?
Я пробовал так:

$name_file = $_FILES ["userfile"] ["name"];
$no_type = ereg ("^(.*)\\. (php|asp|js|htaccess|ini|cgi|exe|htm|html|xml)$", $name_file);
    if ($no_type)
    {
    echo "Запрещённый тип файла";
    }

Но не получается, загружаются все расширения.

   
 
 автор: Axxil   (11.07.2006 в 22:15)   письмо автору
 
   для: QWPLJ   (11.07.2006 в 16:45)
 

А если так:

<?
  
list($filename,$ext) = explode(".",$name_file);
  
$ban_array = array('php','asp','js'); // короче все нежелательные типы файлов
  
if(in_array($ext,$ban_array)){
    echo 
"Запрещённый тип файла"
  }
?>

   
 
 автор: valenok   (12.07.2006 в 09:36)   письмо автору
 
   для: Axxil   (11.07.2006 в 22:15)
 

Так нельзя.
Sasha.bad.file.php


<?
$file_name
="Sasha.bad.file.php";
If(
in_array(substr($file_name,strrpos($file_name,".")),$bad_array){die();}

   
 
 автор: bonus_FM   (12.07.2006 в 14:02)   письмо автору
 
   для: valenok   (12.07.2006 в 09:36)
 

Axxil, Ага, спасибо, этот код работает. А как проверить имеются ли в имени загружаемого файла русские символы? А почему нельзя и нужно так: <?
$file_name="Sasha.bad.file.php";
If(in_array(substr($file_name,strrpos($file_name,".")),$bad_array){die();} У меня и так работает.

   
 
 автор: QWPLJ   (12.07.2006 в 15:51)   письмо автору
 
   для: bonus_FM   (12.07.2006 в 14:02)
 

Да код Ахилла работает, но вот хотелось бы тоже насчёт имён файлов узнать.

   
 
 автор: valenok   (12.07.2006 в 16:36)   письмо автору
 
   для: bonus_FM   (12.07.2006 в 14:02)
 

Sasha.bad.file.php
Он решит что окончание нашего файла: ".bad.file.php"
Который не находится в запрещённых окончаниях.

   
 
 автор: valenok   (12.07.2006 в 16:45)   письмо автору
 
   для: bonus_FM   (12.07.2006 в 14:02)
 


if(preg_match("/[а-яё]+/i",$text))

[поправлено модератором]

   
 
 автор: Axxil   (12.07.2006 в 17:18)   письмо автору
 
   для: bonus_FM   (12.07.2006 в 14:02)
 

Вообще это довольно плюшевая проверка, так как достаточно переименовать загружаемый файл с другим расширением чтоб он был пропущен.
Лучше проверять MIME типы файлов. Определить разрешённые и пропускать только их.
MIME тип загружаемого файла храниться в $_FILES['filename']['type'].
Вот некоторые MIME типы (полный список легко можно найти в яндексе):


Архив RAR (.rar) application/x-tar 
Архив ZIP (.zip) application/x-zip-compressed 
Исполняемый файл для DOS или Microsoft Windows (.exe .com) application/octet-stream 
Аудио- или видеозапись ASF video/x-ms-asf 
Аудио- или видеозапись WMV video/x-ms-wmv 
Аудиозапись AIFF audio/aiff 
Аудиозапись AU (.au .snd) audio/basic 
Аудиозапись MIDI audio/mid 
Аудиозапись MP3 audio/mpeg 
Аудиозапись WAV (.wav) audio/x-wav 
Аудиозапись WMA audio/x-ms-wma 
Аудиозапись AVI video/avi 
Аудиозапись AVI (.avi) video/x-msvideo 
Видеозапись Indeo (IVF) video/x-ivf 
Видеозапись MPEG (.mpeg .mpg .mpe) video/mpeg 
Видеозапись QuickTime (.qt .mov) video/quicktime 
Визитная карточка, используемая почтовыми программами для хранения данных об адресате text/x-vcard 
Графический файл ART image/x-jg 
Графический файл BMP image/bmp 
Графический файл GIF image/gif 
Графический файл JPEG image/jpeg 
Графический файл PNG (.png) image/png 
Графический файл Macromedia Flash application/futuresplash 
Графический файл TIFF image/tiff 
Документ Adobe Acrobat application/pdf 
Документ HTML text/html 
Документ Microsoft Excel application/x-msexcel 
Документ Microsoft Word application/msword 
Документ RTF application/msword 
Документ RTX text/richtext 
Документ XML text/xml 
Приложение application/x-msdownload 
Приложение HTML (HTA) application/hta 
Таблица стилей HTML text/css 
Текстовой документ text/plain 
ECMAScript text/ecmascript 
Microsoft JScript text/Jscript 
Microsoft JScript text/javascript 
Microsoft VBScript text/vbs 
Microsoft VBScript text/vbscript 
Трехмерная интерактивная графика в формате VRML (.wrl) x-world/x-vrml 

   
Rambler's Top100
вверх

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