• Можно ли как-то ограничить кол-во файлов для выбора в type="file"?

    @secretsergey Автор вопроса
    Не подскажете как совместить 2 эти скрипта, чтобы письмо не уходило, если не соблюдено условие 4 файлов?
    <script>
    	document.getElementById('formss1').addEventListener('submit', function(evt){
    	  var http = new XMLHttpRequest(), f = this;
    	  evt.preventDefault();
    	  http.open("POST", "mail.php", true);
    		location.href = "#123";
    	  http.onerror = function() {
    		alert('Извините, данные не были переданы');
    	  }
    	  http.send(new FormData(f));
    	}, false);
    	</script>

    $(function(){
        $("button[type='submit']").click(function(){
            var $fileUpload = $("input[type='file']");
            if (parseInt($fileUpload.get(0).files.length)>2){
             alert("You can only upload a maximum of 2 files");
            }
        });    
    });

    Попробовал вставить в самое начало, но как и думал срабатывают оба скрипта.
  • Как через echo сделать редирект страницы?

    @secretsergey Автор вопроса
    alex stephen: window location прописал в js и таким образом решил вопрос.
  • Как через echo сделать редирект страницы?

    @secretsergey Автор вопроса
    alex stephen:
    <?php
      $to = "email@mail.ru"; // поменять на свой электронный адрес
      $subject = "Заявка онлайн";
      $URL="#123";
      $from ="От ".$_SERVER['HTTP_HOST'];
      $message = "Имя: ".$_POST['name']."\nТелефон: ".$_POST['phone'].;
      $boundary = md5(date('r', time()));
      $filesize = '';
      $headers = "MIME-Version: 1.0\r\n";
      $headers .= "From: " . $from . "\r\n";
      $headers .= "Reply-To: " . $from . "\r\n";
      $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
      $message="
    Content-Type: multipart/mixed; boundary=\"$boundary\"
    
    --$boundary
    Content-Type: text/plain; charset=\"utf-8\"
    Content-Transfer-Encoding: 7bit
    
    $message";
      for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
         if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
             $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
             $filename = $_FILES['fileFF']['name'][$i];
             $filetype = $_FILES['fileFF']['type'][$i];
             $filesize += $_FILES['fileFF']['size'][$i];
             $message.="
    
    --$boundary
    Content-Type: \"$filetype\"; name=\"$filename\"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename=\"$filename\"
    
    $attachment";
         }
       }
       $message.="
    --$boundary--";
    
        mail($to, $subject, $message, $headers);
    	header("location: $URL");
    ?>


    <script>
    	document.getElementById('formss1').addEventListener('submit', function(evt){
    	  var http = new XMLHttpRequest(), f = this;
    	  evt.preventDefault();
    	  http.open("POST", "mail.php", true);
    	  http.onreadystatechange = function() {
    		if (http.readyState == 4 && http.status == 200) {
    		  alert(http.responseText);
    		  if (http.responseText.indexOf(f.nameFF.value) == 0) { 
    			f.messageFF.removeAttribute('value');
    			f.messageFF.value='';
    		  }
    		}
    	  }
    	  http.onerror = function() {
    		alert('Извините, данные не были переданы');
    	  }
    	  http.send(new FormData(f));
    	}, false);
    	</script>


    Через header отправляет первое письмо нормально и потом в догонку примерно 20 пустых, после чего выдаёт ошибку.
  • Как через echo сделать редирект страницы?

    @secretsergey Автор вопроса
    Наверное, я немного не так выразился. Требуется редирект не перезагружая страницу. Надо просто добавить в адресную строку #123. Через header не работает, к сожалению. Письма шлёт, но потом ошибку выбивает.