За последние 24 часа нас посетили 16564 программиста и 1594 робота. Сейчас ищут 902 программиста ...

Пошаговая форма обратной связи

Тема в разделе "JavaScript и AJAX", создана пользователем simamura, 25 июн 2015.

  1. simamura

    simamura Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    6
    Симпатии:
    0
    Всем привет!
    Есть вот такая Форма работает, но не так как бы хотелось.
    Задача в Step 3 вывести данные с полей Step 1 и Step 2 не перегружая страницу. А потом отправить с Step 3 на почту. Плюс косяк с обновлением страницы форма повторно отправляет дынные.
    Step перелистываемый
    Код (PHP):
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.  $to = "mail@net"; 
    4.  $from = $_POST['contactFF'];
    5.  $subject = "Заполнена заявка с ".$_SERVER['HTTP_REFERER'];
    6.  $message = "Имя: ".$_POST['nameFF']."\nEmail: ".$from."\nIP: ".$_SERVER['REMOTE_ADDR']."\nДетали заявки: ".$_POST['messageFF'];
    7.  $boundary = md5(date('r', time()));
    8.  $filesize = '';
    9.  $headers = "MIME-Version: 1.0\r\n";
    10.  $headers .= "From: " . $from . "\r\n";
    11.  $headers .= "Reply-To: " . $from . "\r\n";
    12.  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13.  $message="
    14. Content-Type: multipart/mixed; boundary=\"$boundary\"
    15. --$boundary
    16. Content-Type: text/plain; charset=\"utf-8\"
    17. Content-Transfer-Encoding: 7bit
    18. $message";
    19.  for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
    20.      if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
    21.         $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
    22.         $filename = $_FILES['fileFF']['name'][$i];
    23.         $filetype = $_FILES['fileFF']['type'][$i];
    24.         $filesize .= $_FILES['fileFF']['size'][$i];
    25.         $message.="
    26. --$boundary
    27. Content-Type: \"$filetype\"; name=\"$filename\"
    28. Content-Transfer-Encoding: base64
    29. Content-Disposition: attachment; filename=\"$filename\"
    30. $attachment";
    31.     }
    32.   }
    33.   $message.="
    34. --$boundary--";
    35.  
    36.  if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    37.    mail($to, $subject, $message, $headers);
    38.    $output = '<script>alert("Ваша заявка отправлена, спасибо, я свяжусь с вами в ближайшее время!");</script>';
    39.  } else {
    40.    $output = '<script>alert("Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.");</script>';
    41.  }
    42. }
    43. ?>
    44. <html lang="ru">
    45. <head>
    46. <meta charset="utf-8">
    47. <?php include ('css.php');?>
    48. </head>
    49.  
    50. <?php echo $output; ?>
    51. <body>
    52. <div class="container">
    53. <div class="stepwizard">
    54.     <div class="stepwizard-row setup-panel">
    55.         <div class="stepwizard-step">
    56.             [url="#step-1"]1[/url]
    57.             <p>Step 1</p>
    58.         </div>
    59.         <div class="stepwizard-step">
    60.             [url="#step-2"]2[/url]
    61.             <p>Step 2</p>
    62.         </div>
    63.         <div class="stepwizard-step">
    64.             [url="#step-3"]3[/url]
    65.             <p>Step 3</p>
    66.         </div>
    67.     </div>
    68. </div>
    69. <form  enctype="multipart/form-data" method="POST" id="feedback-form">
    70.  
    71.     <div class="row setup-content" id="step-1">
    72.         <div class="col-xs-12">
    73.             <div class="col-md-12">
    74.                 <h3> Step 1</h3>
    75.                 <div class="form-group">
    76.                     <label class="control-label">First Name</label>
    77.                     <input  maxlength="100" name="nameFF" id="nameFF"  type="text" required="required" class="form-control" placeholder="Enter First Name"  />
    78.                 </div>
    79.                
    80.                 <button class="btn btn-primary nextBtn btn-lg pull-right" type="button" >Продолжыть</button>
    81.             </div>
    82.         </div>
    83.     </div>
    84.     <div class="row setup-content" id="step-2">
    85.         <div class="col-xs-12">
    86.             <div class="col-md-12">
    87.                 <h3> Step 2</h3>
    88.                
    89.                 <div class="form-group">
    90.                        
    91.                     <label class="control-label">Email Address</label>
    92.                     <input maxlength="200" type="email" name="contactFF" id="contactFF" required="required" class="form-control" placeholder="Enter Company Address"  />
    93.                 </div>
    94.                                 <button type="button" class="btn btn-primary prevBtn btn-lg pull-left">Назад</button>
    95.                 <button class="btn btn-primary nextBtn btn-lg pull-right" type="button" >Проверка данных</button>
    96.             </div>
    97.         </div>
    98.     </div>
    99.     <div class="row setup-content" id="step-3">
    100.         <div class="col-xs-12">
    101.             <div class="col-md-12">
    102.                 <h3> Step 3</h3>
    103.                                 <label for="fileFF"><strong>Прикрепить фотографию:</strong></label>
    104. <input type="file" name="fileFF[]" multiple id="fileFF" class="w100">
    105.                                 <button type="button" class="btn btn-primary prevBtn btn-lg pull-left">Назад</button>
    106.                 <button class="btn btn-primary pull-right" type="submitFF" >Send message</button>
    107.                                 <div id="success"><p class="help-block"></p></div>
    108.             </div>
    109.         </div>
    110.     </div>
    111. </form>
    112. </div>
    113. <?php include ('js.php');?>
    114. </body>
    115. </html>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ajax для отправки данных без обновления страницы

    Повторная отправка из-за того, что запрос был POST и при обновлении страницы, повторно отправляется форма, чтобы этого избежать, после получение POST можно сделать redirect на другую страницу
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям