Rumah  >  Soal Jawab  >  teks badan

Mesej ralat tidak dipaparkan di bawah medan input yang sepadan. Gunakan HTML, PHP

Bagaimana untuk segera memaparkan mesej ralat yang sepadan di bawah medan input jika pengguna memasukkan data tidak sah. Sebagai contoh, pengguna memasukkan data tidak sah dalam medan Nama dan mesej ralat serta-merta muncul di bawah medan Nama. Perkara yang sama berlaku untuk medan E-mel dan Mesej. Saya menggunakan kod HTML dan PHP seterusnya ini:

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

}
?>

Saya mencuba pelbagai artikel.

P粉567112391P粉567112391370 hari yang lalu445

membalas semua(1)saya akan balas

  • P粉391677921

    P粉3916779212023-09-16 00:20:53

    Letak kod HTML dalam else blok

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

    balas
    0
  • Batalbalas