За последние 24 часа нас посетили 16906 программистов и 1632 робота. Сейчас ищут 628 программистов ...

как изменить код, чтобы заработало?

Тема в разделе "PHP для новичков", создана пользователем Igor011997, 9 фев 2018.

Метки:
  1. Igor011997

    Igor011997 Новичок

    С нами с:
    7 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киев
    как я нонял проблема вот в чем. Есть форма с импутом, и она работает. Вот этот импут
    HTML:
    1. <input id="fileSendButt" name="file[]" value="1" size="40" type="file" multiple>
    Далее я подключил библиотеку для Drag-and-drop и она создала вот такой импут, и с этим импутом форма уже не направляет файл на почту
    Код (Text):
    1. <input class="fs-upload-input" type="file" multiple="">

    а в силу того что второй импут создает библиотека я немогу его сделать идентичным первому.
    что нужно поменять в обработчике? вот код
    PHP:
    1.  <?php
    2.  
    3. $to = 'maxim.demkiv@gmail.com';
    4.  
    5. if ( isset( $_POST['sendMail'] ) ) {
    6.     $price = substr( $_POST['price'], 0, 64 );
    7.     $words = substr( $_POST['words'], 0, 64 );
    8.     $pos = substr( $_POST['pos'], 0, 64 );
    9.     $source_language = substr( $_POST['source_language'], 0, 64 );
    10.     $target_language = substr( $_POST['target_language'], 0, 64 );
    11.     $name    = substr( $_POST['name'], 0, 64 );
    12.     $email     = substr( $_POST['email'], 0, 64 );
    13.     $orderNum = substr( $_POST['orderNum'], 0, 64 );
    14.     $orderDate = substr( $_POST['orderDate'], 0, 64 );
    15.     $message = substr( $_POST['message'], 0, 250 );
    16.  
    17. if($_FILES)
    18. {
    19.     $filepath = array();
    20.     $filename = array();
    21.     $file2 = array();
    22.     $i = 0;
    23.         foreach ($_FILES["file"]["error"] as $key => $error) {
    24.             if ($error == UPLOAD_ERR_OK) {
    25.                 $filename[$i][0] = $_FILES["file"]["tmp_name"][$key];
    26.                 $filename[$i][1] = $_FILES["file"]["name"][$key];
    27.                 $i++;
    28.             }
    29.         }
    30.     }
    31.  
    32.  
    33.     $body = "Нове замовлення, виконане із сторінки ( ".$pos." )\r\n\r\n";
    34.     $body .= "№ замовлення:\r\n".$orderNum."\r\n\r\n";
    35.     $body .= "Ім'я замовника:\r\n".$name."\r\n\r\n";
    36.     $body .= "Розмір замовлення:\r\n".$words." слів\r\n\r\n";
    37.     $body .= "Вартість розрахована калькулятором на сайті:\r\n".$price."€\r\n\r\n";
    38.     $body .= "E-mail:\r\n".$email."\r\n\r\n";
    39.     $body .= "Переклад з:\r\n".$source_language."\r\n\r\n";
    40.     $body .= "Переклад на:\r\n".$target_language."\r\n\r\n";
    41.     $body .= "Повідомлення від клієнта:\r\n".$message."\r\n\r\n";
    42.     $body .= "Замовлення створено клієнтом :\r\n".$orderDate;
    43.     send_mail($to, $body, $email, $filename);
    44. }
    45.  
    46.  
    47.  
    48.  
    49. // Вспомогательная функция для отправки почтового сообщения с вложением
    50. function send_mail($to, $body, $email, $filename)
    51. {
    52.     $subject = 'Нове замовлення із сайту iLeo';
    53.     $boundary = "--".md5(uniqid(time())); // генерируем разделитель
    54.     $headers = "From: ".$email."\r\n";
    55.     $headers .= "MIME-Version: 1.0\r\n";
    56.     $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
    57.     $multipart = "--".$boundary."\r\n";
    58.     $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
    59.     $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
    60.  
    61.     $body = $body."\r\n\r\n";
    62.  
    63.     $multipart .= $body;
    64.     foreach ($filename as $key => $value) {
    65.         $fp = fopen($value[0], "r");
    66.         $content = fread($fp, filesize($value[0]));
    67.         fclose($fp);
    68.         $file .= "--".$boundary."\r\n";
    69.         $file .= "Content-Type: application/octet-stream\r\n";
    70.         $file .= "Content-Transfer-Encoding: base64\r\n";
    71.         $file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n";
    72.         $file .= chunk_split(base64_encode($content))."\r\n";
    73.     }
    74.     $multipart .= $file."--".$boundary."--\r\n";
    75.     mail($to, $subject, $multipart, $headers);
    76. }
    77. ?>
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    проверь, что передаешь на сервер
    если сервер получит пост запрос с правильными именами, то всё заработает.
     
  3. Igor011997

    Igor011997 Новичок

    С нами с:
    7 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киев
    а как это проверить?
     
  4. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Сделай
    PHP:
    1. print_r($_FILES);
    После того как отправил картинку.
    МОжет у тебя просто картинка не уходит на сервер
     
  5. Igor011997

    Igor011997 Новичок

    С нами с:
    7 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киев
    у меня print_r($_FILES); ничего не выводит ни в консоль ни на страницу
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Igor011997
    PHP:
    1. var_dump($_FILES);
    А вообще совет на форуме ставь себе IDE для этого дела.
     
    TeslaFeo нравится это.
  7. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Мне кажется он библиотеку поставил но не разобрался как она работает.
     
  8. Igor011997

    Igor011997 Новичок

    С нами с:
    7 фев 2018
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Киев
    вот настройка библиотеки Formstone. postKey -----> Key to upload file as (за спецификацией библиотеки)
    Код (Javascript):
    1. <script type="text/javascript">
    2.         jQuery('document').ready(function($){
    3.             $('.upload').upload({
    4.                     action:'php/multisend.php',
    5.                     label:'Перетащите файлы',
    6.                     postKey:'file',
    7.             });
    8.         });
    9.  
    10.  
    11. </script>
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Вот в методе upload, в параметрах, небось есть и name и все на свете. Кури документацию.
     
  10. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    а вот и доки но я не нашел параметра name лол
    https://formstone.it/components/dropdown/
    --- Добавлено ---
    и вобще зачем библиотека если вот код который будет работать. Ты же через ajax передаешь?
    Код (Javascript):
    1.  var dropZone = $('класс или id твоего элемента');
    2.                     if (typeof(window.FileReader) == 'undefined') {
    3.                         dropZone.prop('placeholder','Не поддерживается браузером!');
    4.                     }
    5.                     dropZone[0].ondragover = function() {
    6.                         dropZone.addClass('hover');
    7.                         return false;
    8.                     };
    9.                  
    10.                     dropZone[0].ondragleave = function() {
    11.                         dropZone.removeClass('hover');
    12.                         return false;
    13.                     };
    14.                  
    15.                     dropZone[0].ondrop = function(event) {
    16.                         event.preventDefault();
    17.                         dropZone.removeClass('hover');
    18.                         dropZone.addClass('drop');                      
    19.                         var files = event.dataTransfer.files;
    20.                         var data = new FormData();
    21.                         $.each( files, function( key, value ){
    22.                             data.append( key, value );
    23.                         });
    24.                      
    25.                         $.ajax({
    26.                             url: 'ajaxrout.php',
    27.                             type: 'POST',
    28.                             data: data,
    29.                             cache: false,
    30.                             processData: false, // Не обрабатываем файлы (Don't process the files)
    31.                             contentType: false, // Так jQuery скажет серверу что это строковой запрос
    32.                             success:function(data){
    33.        
    34.                             },
    35.                         });
    36.                     };
    Он может быть избыточным для тебя. Так что пересмотри и оставь нужное.
     
  11. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    dropZone[0].ondrop => dropZone.on('drop', function(e){})
    Понамешал...
     
  12. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Возможно писал эту функцию когда только начинал знакомиться с drug`n drop. Так что возможно там много чего лишнего
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    [​IMG]
     
  14. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Ну ты понял о чем я. Пытался написать правильно хахха.