PHP Contact From envía correos electrónicos en blanco cuando se ve la página

¿Alguien puede ayudarme a evitar que se envíen correos electrónicos en blanco cada vez que se visita la página?

Aquí está el código que estoy usando.

 

* required field.

<form method="post" action=""> Name: <input type="text" name="name" class="text" value=""> *
Email: <input type="text" name="email" class="text" value=""> *
Comment: *
<?php //if everything is ok, print the message: if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($name && $email && $comment) { echo "

Thank you, $name, for contacting us.

We will email you back at $email in a couple days.

\n"; } else { //missing form value. echo '

Please go back and fill out the form again.

'; return false; } } ?>

Pon toda tu lógica de formulario dentro de tu if ($_SERVER["REQUEST_METHOD"] == "POST") { instrucción. No solo la validación:

 if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = test_input($_POST["name"]); // check if name only contains letters and whitespace if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Only letters and white space allowed"; } } if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]); // check if e-mail address syntax is valid if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) { $emailErr = "Invalid email format"; } } if (empty($_POST["comment"])) { $commentErr = "Comment is required"; } else { $comment = test_input($_POST["comment"]); if (!preg_match("/^[a-zA-Z ]*$/",$comment)) { $commentErr = "Please leave a comment."; } } //create the body of the email $body = "Name: {$_POST['name']} \n\nEmail: {$_POST['email']} \n\nComments: {$_POST['comment']}"; $body = wordwrap($body, 70); // The mail function mail('email@email.com', 'Contact Us Submission', $body, "From: {$_POST['email']}"); } 

FYI, estás abierto a las inyecciones de encabezado . Eso es algo que debe abordar antes de publicar este código en producción.