За последние 24 часа нас посетили 17957 программистов и 1600 роботов. Сейчас ищет 951 программист ...

Помогите добавить расширения файлов для загрузки

Тема в разделе "PHP для новичков", создана пользователем Johnboss, 15 апр 2016.

  1. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Всем добрый день!

    В этом коде жестко прописано, что можно загружать только файлы JPG (file_types : "*.jpg", )
    Очень хочется расширить круг файлов.
    Не подскажите, как это правильно сделать?

    PHP:
    1. <?
    2. if( ! defined( 'rootpath' ) ) {
    3.     die( "Hacking attempt!" );
    4. }
    5. switch($case) {
    6.     case 'title':
    7.  
    8.         include_once 'photo/class/includes.php';
    9.         unset($include);
    10.         $include = new _includesPhoto();
    11.      
    12.      
    13.      
    14.         /* Defines for photo mod */
    15.         $CREATING_THUMBNAIL_TXT = TXT('CREATING_THUMBNAIL');
    16.         $DOWNLOADING = TXT('DOWNLOADING');
    17.         $ABORT_UPLOAD = TXT('ABORT_UPLOAD');
    18.         $ALL_IMAGES_RECEIVED = TXT('ALL_IMAGES_RECEIVED');
    19.         $true_url = $config['http_script_dir'].'/modules/photo';
    20.         $downloadButtonStyle = downloadButtonStyle($true_url);
    21.         /* Resize on clients side */
    22.         if ($photo['resize_on_client_side']) {
    23.             $resize_on_client_side[0] = 'flash9_url : "'.$true_url.'/swfupload/swfupload_fp9.swf",';
    24.             $max = $sql->maxOrMin(array('table' => 'photo_size', 'select' => array('height_px')), 'MAX') * 1.2; // +20%
    25.             $max = intval($max);
    26.             $resize_on_client_side[1] = ',
    27.                    thumbnail_height: '.$max.',
    28.                    thumbnail_width: '.$max.',
    29.                    thumbnail_quality: 100';
    30.             $handlersResizeOnClientSide = '&resize_on_client_side=1';
    31.         }
    32.      
    33.         /* Header for photo mod */
    34.         $header[] = <<<HTML
    35.         <link href="{$true_url}/css.css" rel="stylesheet" type="text/css" media="screen" />      
    36.         <script type="text/javascript" src="{$true_url}/swfupload/swfupload.js"></script>
    37.         <script type="text/javascript" src="{$true_url}/js/handlers.php?data=js{$handlersResizeOnClientSide}"></script>
    38.         <script type="text/javascript">
    39.      
    40.         <!-- text vars -->
    41.         var CREATING_THUMBNAIL_TXT = '{$CREATING_THUMBNAIL_TXT}';
    42.         var DOWNLOADING = '{$DOWNLOADING}';
    43.         var ALL_IMAGES_RECEIVED = '{$ALL_IMAGES_RECEIVED}';
    44.         <!-- / text vars -->
    45.      
    46.         var default_type = '{$photo['photo_type']}';
    47.         var default_size = '{$photo['photo_size']}';
    48.         var can_i_leave = true;
    49.         window.onbeforeunload = function () {
    50.             if (can_i_leave == false) {
    51.                 return '{$ABORT_UPLOAD}';
    52.             }
    53.         };
    54.         {$setcookies}
    55.         var swfu;
    56.         var uni = "{$session_id}";
    57.         var true_url = "{$true_url}";
    58.         var upload_url = "{$config['path_image_upload']}/photo";
    59.         window.onload = function () {
    60.             swfu = new SWFUpload({
    61.                 // Backend Settings
    62.                 upload_url: "{$true_url}/upload.php",
    63.                 post_params: {"PHPSESSID": "{$session_id}"},
    64.                 // File Upload Settings
    65.                 file_size_limit : "{$photo['photo_max_size']} MB",  
    66.                 file_types : "*.jpg",
    67.                 file_types_description : "JPG Images",
    68.                 file_upload_limit : "{$photo['photo_max_q']}",
    69.                 // Event Handler Settings - these functions as defined in Handlers.js
    70.                 //  The handlers are not part of SWFUpload but are part of my website and control how
    71.                 //  my website reacts to the SWFUpload events.
    72.                 // swfupload_load_failed_handler : loadFailed,
    73.                 swfupload_preload_handler : preLoad,
    74.                 file_queue_error_handler : fileQueueError,
    75.                 file_queued_handler : showAjaxBlock,
    76.                 file_dialog_complete_handler : fileDialogComplete,
    77.                 upload_progress_handler : uploadProgress,
    78.                 upload_error_handler : uploadError,
    79.                 upload_success_handler : uploadSuccess,
    80.                 upload_complete_handler : uploadComplete,
    81.                 // Button Settings
    82.                 {$downloadButtonStyle}
    83.                 button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
    84.                 button_cursor: SWFUpload.CURSOR.HAND,
    85.              
    86.                 // Flash Settings
    87.                 flash_url : "{$true_url}/swfupload/swfupload.swf",
    88.                 {$resize_on_client_side[0]}
    89.                 custom_settings : {
    90.                     upload_target : "divFileProgressContainer"{$resize_on_client_side[1]}
    91.                 },
    92.              
    93.                 // Debug Settings
    94.                 debug: false
    95.             });
    96.         };
    97.     </script>
    98.     <script>
    99.         jQuery(document).ready(function() {
    100.          
    101.             jQuery(".headOfTheSideBlock.dropdown").click(function() {
    102.                 var dropDownNextId = jQuery(this).attr('next');
    103.              
    104.                 var dropDownNext = jQuery('#'+dropDownNextId);
    105.                 if ( dropDownNext.css('display') == 'none') {
    106.                     dropDownNext.show('slide',{ direction: 'up' }, 1000);
    107.                     jQuery(this).removeClass('img');
    108.                     jQuery(this).addClass('img2');
    109.                 } else {
    110.                     dropDownNext.hide('slide',{ direction: 'up' }, 1000);
    111.                     jQuery(this).removeClass('img2');
    112.                     jQuery(this).addClass('img');
    113.                 }
    114.              
    115.             });
    116.          
    117.         });          
    118.     </script>
    119.     <!-- highslide -->
    120.         <script type="text/javascript" src="{$true_url}/js/highslide/highslide-with-html.js"></script>
    121.         <link rel="stylesheet" type="text/css" href="{$true_url}/js/highslide/highslide.css" />
    122.     <script type="text/javascript">
    123.         hs.graphicsDir = '{$true_url}/js/highslide/graphics/';
    124.         hs.outlineType = 'rounded-white';
    125.         hs.wrapperClassName = 'draggable-header';
    126.         //hs.height = '500';
    127.         //hs.width  = '415';
    128.         hs.cacheAjax = false;
    129.         hs.preserveContent  = false;
    130.      
    131.     </script>
    132.     <!-- Jcrop -->
    133.         <script src="{$true_url}/js/Jcrop/jquery.Jcrop.js"></script>
    134.         <link rel="stylesheet" href="{$true_url}/js/Jcrop/jquery.Jcrop.css" type="text/css" />
    135.      
    136. HTML;
    137.     unset($case);
    138.     return;
    139. }
    140. include 'photo/encodedIoncube.php';
     
    #1 Johnboss, 15 апр 2016
    Последнее редактирование модератором: 18 апр 2016
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    я сомневаюсь, что у кого то возникает чувство удовольствия от просмотра тонны кода. выкладывай ту часть, с которой проблема!
    а добавить несколько типов файлов - так же как ты добавил один. Если всё работает, то добавь аналогично .png и какие еще нужны...
     
  3. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Элемент кода вот
    PHP:
    1. // File Upload Settings
    2.                 file_size_limit : "{$photo['photo_max_size']} MB",
    3.                 file_types : "*.jpg",
    4.                 file_types_description : "JPG Images",
    5.                 file_upload_limit : "{$photo['photo_max_q']}",
    Просто мне не понятна грамматика написания, как это правильно сделать.
    Пробовал добавлять через запятую, двоеточие, но ничего не получается
     
    #3 Johnboss, 15 апр 2016
    Последнее редактирование модератором: 18 апр 2016
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    PHP:
    1. if($_FILES['file']['type'] == "image/gif" || $_FILES['file']['type'] == "image/png" ||
    2.     $_FILES['file']['type'] == "image/jpg" || $_FILES['file']['type'] == "image/jpeg") {
    3. /* файл нам подходит. обрабатываем */
    4. } else {
    5. /* пользователь послан на... :) */
    6. }
    вот так можно...
    --- Добавлено ---
    'file' - это значение атрибута name="file" в форме! думаю понятно, но на всякий случай...
     
    #4 TeslaFeo, 15 апр 2016
    Последнее редактирование модератором: 18 апр 2016
  5. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Это вставить вместо file_types : "*.jpg", ?
     
    #5 Johnboss, 15 апр 2016
    Последнее редактирование модератором: 18 апр 2016
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    это проверяет, доходит ли нам тип файла. в это нужно завернуть обработку файла и, если у тебя еще есть какие то условия, то вложить их в это. Это скорее альтернативное решение, а не поправка к твоему. :)
     
  7. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Ты сможешь мне помочь в этом?
    Если получится, я готов отблагодарить ))
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    PHP:
    1. <?php
    2.  
    3. // До этого скрипта ты должен задать переменную $UserId. и $_FILES['file'] - это значение атрибута name="file" в форме.
    4.  
    5. if( $_FILES['file']['type'] == "image/gif" || $_FILES['file']['type'] == "image/png" || $_FILES['file']['type'] == "image/jpg" ) { // если файл нам подходит
    6.  
    7. $fileName = $UserId."id_foto_"; // начинаем формирование конечного имени файла
    8.  
    9. $orignName = $_FILES['uploadfile']['name']; // сохраняем в переменну оригинальное имя файла
    10.  
    11. $x = preg_match( "/png$/", $orignName ); // расширение файла png ?
    12.  
    13. $y = preg_match( "/jpg$/", $orignName ); // расширение файла jpg ?
    14.  
    15. $z = preg_match( "/gif$/", $orignName ); // расширение файла gif ?
    16.  
    17. if ( $x == 1 OR $y == 1 OR $z == 1 ) {
    18.  
    19. if (  $x == 1 ) { $rassh = ".png"; }    // определяем
    20.  
    21. if ( $y == 1 ) { $rassh = ".jpg"; }        //    расширение
    22.  
    23. if ( $z == 1 ) { $rassh = ".gif"; }        //    файла
    24.  
    25. $i = 0;    // счетчик
    26.  
    27. a: // метка для goto
    28.  
    29. $tmp = "files/$fileName".$i.$rassh;    // формируем путь по которому файл с таким именем возможно уже существует.
    30.  
    31. $R = file_exists($tmp);        // проверяем, существует ли файл с таким именем
    32.  
    33. if ( $R == 1 ) { $i++; goto a; }    // если существует, то увеличиваем счетчик на 1 и отправляемся к метке для goto
    34.  
    35. $fileName = $fileName.$i.$rassh;    // имя файла сфомированно
    36.  
    37. $uploaddir = './files/';    // относительный путь к конечной папке
    38.  
    39. $uploadfile = $uploaddir.basename($fileName); //  
    40.  
    41. copy($_FILES['uploadfile']['tmp_name'], $uploadfile); //    копируем файл в нужный нам каталог
    42.  
    43. // файлы будут сохраняться с именами типа 45id_foto_0.jpg, 45id_foto_1.jpg, 45id_foto_2.jpg и т д
    44.  
    45. // 45 - id пользователя для примера 0, 1, 2 - счетчик если у пользователя несколько файлов одного типа.
    46.  
    47. }
    48.  
    49. }
    50.  
    51. ?>
     
    #8 TeslaFeo, 15 апр 2016
    Последнее редактирование модератором: 18 апр 2016
  9. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Огромное спасибо!
    Но прошу прощения за тупость. Я не смогу создать переменную ибо не хватает мозгов.
    Если это надо сделать прямо в этом модуле, но можешь скинуть его целиком, как он должен быть?
    --- Добавлено ---
    Разобрались!
    Человек подсказал, все оказывается гораздо проще.
    Необходимо прописать file_types : "*.jpg; *.png; *.jpeg; *.gif"
    И все заработало!
    Всем огромное спасибо!
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    вытянуть значение из БД и присвоить переменной...
     
  11. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    Разобрались!
    Человек подсказал, все оказывается гораздо проще.
    Необходимо прописать file_types : "*.jpg; *.png; *.jpeg; *.gif"
    И все заработало!
    Всем огромное спасибо!
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Это тебе подсказали про проверку на клиенте, а точнее, настройки параметров диалогового окна, и к php это имеет малое отношение. А здесь тебе пытались подсказать, как сделать проверку на сервере, поскольку тебе могут ложную инфу прислать намеренно и не через твою красивую формочку. Поэтому все проверки на клиенте обязательно дублируются на сервере.
     
  13. Johnboss

    Johnboss Новичок

    С нами с:
    15 апр 2016
    Сообщения:
    36
    Симпатии:
    0
    ааааа ..... я понял! спасибо огромное
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @TeslaFeo, не отношу себя к ярым противникам goto, но использовать его так:
    это трындец. Тут как раз пример использования цикла do-while, который все сюда приходящие нубы используют совсем не для тех задач
    PHP:
    1. $i = 0;
    2.  
    3. do {
    4.    $tmp = "files/${fileName}$i.$rassh";
    5.    $i++;
    6. } while (file_exists($tmp));