@Gambi-Titto
Начинающий програмист

Как в PHP или JS добавить переадрасацию на другой сайт?

PHP-отправка формы на почту.
<?php
if (isset ($_POST['contactFF'])) {
  $to = "sme071825@gmail.com"; 
  $from = $_POST['contactFF'];
  $e_mail = "sme071825@gmail.com";
  $subject = "Номер:".$_POST['numberzakaz'].", Отмена Заказа";
  $message = "Email: ".$from. "\nНомер Заказа: " .$_POST['numberzakaz']. "\nВаш ID: " .$_POST['idnumber'];
  $site = 

  $boundary = md5(date('r', time()));
  $filesize = '';
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "From: " . $e_mail . "\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--";

  if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    mail($to, $subject, $message, $headers);
    echo 'Ваше сообщение получено, спасибо!';
  } else {
    echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  }
}
?>


Эта тоже корень сайта только JavaScript
/*****************************************************************/
  document.getElementById('feedback-form').addEventListener('submit', function(evt){
    var http = new XMLHttpRequest(), f = this;
    evt.preventDefault();
    http.open("POST", "contacts.php", true);
    http.onreadystatechange = function() {
      if (http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
      }
    }
    http.send(new FormData(f));
  }, false);
  /*****************************************************************/
            var form = document.querySelector('.needs-validation');
        form.addEventListener('submit', function(event) {
            if (form.checkValidity() === false) {
                event.preventDefault();
                event.stopPropagation();
            }
            form.classList.add('was-validated');
        })
/******************************************************************/
$(".custom-file-input").on("change", function() {
  var fileName = $(this).val().split("\\").pop();
  $(this).siblings(".custom-file-label").addClass("selected").html(fileName);
});
/*****************************************************************/

Пробовал всё, не получается, то форма не отправляется на почту то вообще ничего не работает. HELP!!!
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@FKV
В js замени
if (http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
      }

на
if (http.readyState == 4 && http.status == 200) {
        alert(http.responseText); // это лучше убрать, чтобы сразу переадресация была, без ожидания пока пользователь нажмет кнопку "OK" 
       window.location.replace("url_сайта");
      }
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
первое что бросается в глаза - код js должен быть обернут в
document.addEventListener("DOMContentLoaded", function(){
  // ваш js
});
иначе он работать нормально не будет.
Далее,
$e_mail = "sme071825@gmail.com";
...
$headers .= "From: " . $e_mail . "\r\n";
From: должен содержать емэйл сервера с которого вы отправляете почту, с таким заголовком дальше первого спамфильтра ваше письмо не уедет. Или используйте PHPMailer.

Пробовал всё, не получается,
Значит не все пробовали

то форма не отправляется на почту
При этом обычно видно ошибки в консоли и/или в логах сервера, где они?

то вообще ничего не работает. HELP!!!
Вообще ничего не работает это не описание проблемы, это крик истеричной домохозяйки, что конкретно не работает, какие ошибки в консоли, в логах, что уходит на сервер, что возвращается...
Ответ написан
@dpws
Вы отправляете запрос на сервер через XMLHttpRequest, следовательно, редирект на PHP перенаправит сам запрос, а не пользователя, который находится на странице.

Делайте переадресацию через JS, после получения успешного ответа от сервера:

window.location.href="https://habr.com"

P.S.: С точки зрения поведения истории браузера, вариант FKV будет лучше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы