【问题标题】:How do I reload, clear or redirect a PHPmailer form after submitting?提交后如何重新加载、清除或重定向 PHPmailer 表单?
【发布时间】:2020-09-25 05:11:50
【问题描述】:

当用户提交表单时,数据不会被删除,他可以发送垃圾邮件。提交后如何清理或重定向?头疼得厉害,我在任何地方都没有找到这个表格的答案。谢谢,对不起我的英语。 表单由以下代码组成:

  function send(event, php){
    console.log("Отправка запроса");
    event.preventDefault ? event.preventDefault() : event.returnValue = false;
    var req = new XMLHttpRequest();
    req.open('POST', php, true);
    req.onload = function() {
    if (req.status >= 200 && req.status < 400) {
    json = JSON.parse(this.response);
        if (json.result == "success") {
            alert("Сообщение отправлено");
        } else {
            alert("Ошибка. Сообщение не отправлено");
        }
    // Если не удалось связаться с php файлом
    } else {alert("Ошибка сервера. Номер: "+req.status);}}; 

// Если не удалось отправить запрос. Стоит блок на хостинге
req.onerror = function() {alert("Ошибка отправки запроса");};
req.send(new FormData(event.target));
}
<?php
// Файлы phpmailer
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';
// Переменные, которые отправляет пользователь
$name = $_POST['name'];
$self = $_POST['self'];
$file = $_FILES['myfile'];

// Формирование самого письма
$title = "$name";
$body = "********";

// Настройки PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
    $mail->isSMTP();   
    $mail->CharSet = "UTF-8";
    $mail->SMTPAuth   = true;
    //$mail->SMTPDebug = 2;
    $mail->Debugoutput = function($str, $level) {$GLOBALS['status'][] = $str;};

    // Настройки вашей почты
    $mail->Host       = 'smtp.yandex.ru'; // SMTP сервера вашей почты
    $mail->Username   = '********'; // Логин на почте
    $mail->Password   = '********'; // Пароль на почте
    $mail->SMTPSecure = 'ssl';
    $mail->Port       = 465;
    $mail->setFrom('*******@yandex.ru', 'Заявка с сайта!'); // Адрес самой почты и имя отправителя

    // Получатель письма
    $mail->addAddress('********@gmail.com');  

if (!empty($file['name'][0])) {
    for ($ct = 0; $ct < count($file['tmp_name']); $ct++) {
        $uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'][$ct]));
        $filename = $file['name'][$ct];
        if (move_uploaded_file($file['tmp_name'][$ct], $uploadfile)) {
            $mail->addAttachment($uploadfile, $filename);
            $rfile[] = "Файл $filename прикреплён";
        } else {
            $rfile[] = "Не удалось прикрепить файл $filename";
        }
    }   
}

// Отправка сообщения
$mail->isHTML(true);
$mail->Subject = $title;
$mail->Body = $body;    

if ($mail->send()) {$result = "success";} 
else {$result = "error";}

} catch (Exception $e) {
    $result = "error";
    $status = "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}
// Отображение результата
echo json_encode(["result" => $result, "resultfile" => $rfile, "status" => $status]);
?>

再次感谢你

【问题讨论】:

  • 在请求响应重定向后使用 location.href = "url"
  • @Jerson 我试图在最后插入这段代码,但由于某种原因它不起作用:( if(!$mail->send()) { echo 'Error'; } else { header('位置:thank-you.html'); }
  • 所以邮件发送不正确

标签: javascript php phpmailer


【解决方案1】:

试试这个重定向

if ($mail->Send()) { 
        header("Location:file.php");//echo "Email Sent!";            
    }

【讨论】:

  • 我做对了吗?由于某种原因,信件没有来,但页面重新加载 $mail->isHTML(true); $mail->主题 = $title; $mail->正文 = $body; // Проверяем отравленность сообщения if ($mail->send()) {$result = "success";} else {$result = "error";} } catch (Exception $e) { $result = "error"; $status = "Сообщение не было отправлено。Причина ошибки: {$mail->ErrorInfo}"; } if ($mail->Send()) { header("Location:file.php");//echo "Email Sent!"; }
【解决方案2】:

谢谢大家,我没想到我能让一切变得如此简单。

 function send(event, php){
    console.log("Отправка запроса");
    event.preventDefault ? event.preventDefault() : event.returnValue = false;
    var req = new XMLHttpRequest();
    req.open('POST', php, true);
    req.onload = function() {
    if (req.status >= 200 && req.status < 400) {
    json = JSON.parse(this.response);
        if (json.result == "success") {
            window.location.href = "site-adress";
        } else {
            alert("Ошибка. Сообщение не отправлено");
        }
    // Если не удалось связаться с php файлом
    } else {alert("Ошибка сервера. Номер: "+req.status);}}; 

// Если не удалось отправить запрос. Стоит блок на хостинге
req.onerror = function() {alert("Ошибка отправки запроса");};
req.send(new FormData(event.target));
}


    

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多