Heim > Fragen und Antworten > Hauptteil
So zeigen Sie sofort die entsprechende Fehlermeldung unter dem Eingabefeld an, wenn der Benutzer ungültige Daten eingibt. Wenn der Benutzer beispielsweise ungültige Daten in das Feld „Name“ eingibt, wird sofort eine Fehlermeldung unter dem Feld „Name“ angezeigt. Das Gleiche gilt für die Felder E-Mail und Nachricht. Ich verwende diesen nächsten HTML- und PHP-Code:
<form method="POST" action="send-email.php"> <input type="text" name="name" id="name" placeholder="Name*" required> <div class="error"><?php echo $nameErr ?></div> <input type="email" name="email" id="email" placeholder="Email*" required> <div class="error"><?php echo $emailErr ?></div> <textarea name="message" id="message" placeholder="Your Message*" required></textarea> <div class="error"><?php echo $messErr ?></div> <button type="submit" name="submit" id="submit" class="button">Start</button> </form>
<?php require "vendor/autoload.php"; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; $nameSanitized = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING); $emailSanitized = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); $messageSanitized = filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING); $subject = "new message "; $valid = true; $emailErr = ""; $nameErr = ""; $messErr = ""; if (!preg_match('/^[\p{Latin}\p{Cyrillic} ]*$/u', $nameSanitized)) { $nameErr = "Only Latin and Cyrillic letters and white space allowed in the name field.\n"; $valid = false; } if (empty($nameSanitized) || empty($messageSanitized)) { $messErr = "Name and message are required.\n"; $valid = false; } if (!preg_match("/^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+$/", $emailSanitized)) { $emailErr = "Email should contain only letters, numbers, and underscores.\n"; $valid = false; } //only send if all validations passed: if ($valid == true) { try { $mail = new PHPMailer(true); $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->isSMTP(); $mail->SMTPAuth = true; $mail->Host = "smtp.gmail.com"; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; require_once 'config.php'; $mail->Username = SMTP_USERNAME; $mail->Password = SMTP_PASSWORD; $mail->setFrom($emailSanitized, $nameSanitized); $mail->addAddress("myemail@gmail.com", "myemail"); $mail->Subject = $subject; $mail->Body = "Name: $nameSanitized\nEmail: $emailSanitized\n\n$messageSanitized"; $mail->send(); header("Location: sent.html"); } catch (Exception $e) { echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo; } } else { echo $emailErr; echo $nameErr; echo $messErr; } ?>
Ich habe verschiedene Artikel ausprobiert.
P粉3916779212023-09-16 00:20:53
将 HTML 代码放入 else
块中
} else { ?> <form method="POST" action="send-email.php"> <input type="text" name="name" id="name" placeholder="Name*" required> <div class="error"><?php echo $nameErr ?></div> <input type="email" name="email" id="email" placeholder="Email*" required> <div class="error"><?php echo $emailErr ?></div> <textarea name="message" id="message" placeholder="Your Message*" required></textarea> <div class="error"><?php echo $messErr ?></div> <button type="submit" name="submit" id="submit" class="button">Start</button> </form> <?php }