Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.26 KB | None | 0 0
  1. <script>
  2. document.getElementById('feedback-form').addEventListener('submit', function(evt){
  3.   var http = new XMLHttpRequest(), f = this;
  4.   evt.preventDefault();
  5.   http.open("POST", "contacts.php", true);
  6.   http.onreadystatechange = function() {
  7.     if (http.readyState == 4 && http.status == 200) {
  8.       alert(http.responseText);
  9.       if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поле сообщения, если в ответе первым словом будет имя отправителя
  10.         f.messageFF.removeAttribute('value');
  11.         f.messageFF.value='';
  12.       }
  13.     }
  14.   }
  15.   http.onerror = function() {
  16.     alert('Извините, данные не были переданы');
  17.   }
  18.   http.send(new FormData(f));
  19. }, false);
  20. </script>
  21.  
  22.  
  23. <?php
  24. if (isset ($_POST['contactFF'])) {
  25.   $to = "killtobanana@gmail.com"; // поменять на свой электронный адрес
  26.   $from = $_POST['contactFF'];
  27.   $subject = "Заполнена контактная форма с ".$_SERVER['HTTP_REFERER'];
  28.   $message = "Имя: ".$_POST['nameFF']."\nТелефон: ".$_POST['phoneFF']."\nEmail: ".$from."\nСообщение: ".$_POST['messageFF'];
  29.   $boundary = md5(date('r', time()));
  30.   $filesize = '';
  31.   $headers = "MIME-Version: 1.0\r\n";
  32.   $headers .= "From: " . $from . "\r\n";
  33.   $headers .= "Reply-To: " . $from . "\r\n";
  34.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  35.   $message="
  36. Content-Type: multipart/mixed; boundary=\"$boundary\"
  37.  
  38. --$boundary
  39. Content-Type: text/plain; charset=\"utf-8\"
  40. Content-Transfer-Encoding: 7bit
  41.  
  42. $message";
  43.   for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
  44.      if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
  45.          $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
  46.          $filename = $_FILES['fileFF']['name'][$i];
  47.          $filetype = $_FILES['fileFF']['type'][$i];
  48.          $filesize += $_FILES['fileFF']['size'][$i];
  49.          $message.="
  50.  
  51. --$boundary
  52. Content-Type: \"$filetype\"; name=\"$filename\"
  53. Content-Transfer-Encoding: base64
  54. Content-Disposition: attachment; filename=\"$filename\"
  55.  
  56. $attachment";
  57.      }
  58.    }
  59.    $message.="
  60. --$boundary--";
  61.  
  62.   if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
  63.     mail($to, $subject, $message, $headers);
  64.     echo $_POST['nameFF'].', Ваше сообщение получено, спасибо!';
  65.   } else {
  66.     echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  67.   }
  68. }
  69. ?>
  70.  
  71. <!DOCTYPE HTML>
  72. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  73. <title>Контактная форма</title>
  74. <style>
  75. #feedback-form { /* вся форма */
  76.   max-width: 550px;
  77.   padding: 2%;
  78.   border-radius: 3px;
  79.   background: #f1f1f1;
  80. }
  81. #feedback-form label { /* наименование полей */
  82.   float: left;
  83.   display: block;
  84.   clear: right;
  85. }
  86. #feedback-form .w100 { /* поля */
  87.   float: right;
  88.   max-width: 400px;
  89.   width: 97%;
  90.   margin-bottom: 1em;
  91.   padding: 1.5%;
  92. }
  93. #feedback-form .border { /* граница полей */
  94.   border-radius: 1px;
  95.   border-width: 1px;
  96.   border-style: solid;
  97.   border-color: #C0C0C0 #D9D9D9 #D9D9D9;
  98.   box-shadow: 0 1px 1px rgba(255,255,255,.5), 0 1px 1px rgba(0,0,0,.1) inset;
  99. }
  100. #feedback-form .border:focus {
  101.   outline: none;
  102.   border-color: #abd9f1 #bfe3f7 #bfe3f7;
  103. }
  104. #feedback-form .border:hover {
  105.   border-color: #7eb4ea #97cdea #97cdea;
  106. }
  107. #feedback-form .border:focus::-moz-placeholder { /* убрать при фокусе первоначальный текст поля */
  108.   color: transparent;
  109. }
  110. #feedback-form .border:focus::-webkit-input-placeholder {
  111.   color: transparent;
  112. }
  113. #feedback-form .border:not(:focus):not(:hover):valid { /* правильно заполненные поля */
  114.   opacity: .8;
  115. }
  116. #submitFF { /* кнопка "Отправить" */
  117.   padding: 2%;
  118.   border: none;
  119.   border-radius: 3px;
  120.   box-shadow: 0 0 0 1px rgba(0,0,0,.2) inset;
  121.   background: #669acc;
  122.   color: #fff;
  123. }
  124. #feedback-form br {
  125.   height: 0;
  126.   clear: both;
  127. }
  128. #submitFF:hover {
  129.   background: #5c90c2;
  130. }
  131. #submitFF:focus {
  132.   box-shadow: 0 1px 1px #fff, inset 0 1px 2px rgba(0,0,0,.8), inset 0 -1px 0 rgba(0,0,0,.05);
  133. }
  134. </style>
  135. <div id="wrap">
  136. <form enctype="multipart/form-data" method="post" id="feedback-form" class="feedback-form" >
  137. <label for="nameFF">Имя:</label>
  138. <input type="text" name="nameFF" id="nameFF" required placeholder="например, Иван Иванович Иванов" x-autocompletetype="name" class="w100 border">
  139. <label for="contactFF">Email:</label>
  140. <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border">
  141. <label for="fileFF">Прикрепить файл:</label>
  142. <input type="file" name="fileFF[]" multiple id="fileFF" class="w100">
  143. <label for="messageFF">Сообщение:</label>
  144. <textarea name="messageFF" id="messageFF" required rows="5" placeholder="Детали заявки…" class="w100 border"></textarea>
  145. <br>
  146. <input value="Отправить" type="submit" id="submitFF">
  147. </form>
  148. </div>
  149.  
  150. <div id="wrap">
  151. <form enctype="multipart/form-data" method="post" id="feedback-form" class="feedback-form" >
  152. <label for="nameFF">Имя:</label>
  153. <input type="text" name="nameFF" id="nameFF" required placeholder="например, Иван Иванович Иванов" x-autocompletetype="name" class="w100 border">
  154. <label for="contactFF">Email:</label>
  155. <input type="email" name="contactFF" id="contactFF" required placeholder="например, ivan@yandex.ru" x-autocompletetype="email" class="w100 border">
  156. <label for="fileFF">Прикрепить файл:</label>
  157. <input type="file" name="fileFF[]" multiple id="fileFF" class="w100">
  158. <label for="messageFF">Сообщение:</label>
  159. <textarea name="messageFF" id="messageFF" required rows="5" placeholder="Детали заявки…" class="w100 border"></textarea>
  160. <br>
  161. <input value="Отправить" type="submit" id="submitFF">
  162. </form>
  163. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement