提交后如何重新加载、清除或重定向PHPmailer表单



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

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 PHPMailerPHPMailerPHPMailer();
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]);
?>

再次感谢

尝试重定向

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

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

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));
}

最新更新