Hello, How can I make it so my script will not allow people to hit submit until the have filled in the required field/s because if you hit submit without entering anything I get a blank email which is a little annoying. HTML <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <p>Name:<br> <input name="name" type="text" /> </p> <p>Email:<br> <input name="email" type="text" /> </p> <p>Subject:<br> <input name="subject" type="text" /> </p> <p>Message:<br> <textarea name="message" rows="6"></textarea> <br /> <input type="submit" value="Send" /><input type="hidden" name="do" value="send" /><input type="reset" value="Reset" /> </p></form> Code (markup): PHP <?php if($_POST['do']=="send") { $recipient="Email"; // Set your email here // $subject=$_POST['subject']; $name=$_POST['name']; $email=$_POST['email']; $message = "Name: {$name}\n\nMessage:\n{$_POST['message']}"; $formsend=mail("$recipient", "$subject", "$message", "From: $name ($email)\r\nReply-to:$email"); echo("<p>Your message was successfully sent!</p>"); } ?> Code (markup): Thanks in advance!
A very simple way <?php $errors = array(); if($_POST['do']=="send") { $recipient="Email"; // Set your email here // if (!$subject=$_POST['subject']) $errors[] = 'Subject required'; if (!$name=$_POST['name']) $errors[] = 'Name required'; if (!$email=$_POST['email']) $errors[] = 'Email required'; if (!$message=$_POST['message']) $errors[] = 'Message required'; if (!$errors) { $message = "Name: {$name}\n\nMessage:\n{$message}"; $formsend=mail("$recipient", "$subject", "$message", "From: $name ($email)\r\nReply-to:$email"); echo("<p>Your message was successfully sent!</p>"); } } ?> PHP: And in your HTML: <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <?php if ($errors) echo '<p>The following errors occurred: <br />' . join('<br />', $errors) . '</p>'; ?> <p>Name:<br> <input name="name" type="text" /> </p> <p>Email:<br> <input name="email" type="text" /> </p> <p>Subject:<br> <input name="subject" type="text" /> </p> <p>Message:<br> <textarea name="message" rows="6"></textarea> <br /> <input type="submit" value="Send" /><input type="hidden" name="do" value="send" /><input type="reset" value="Reset" /> </p></form> Code (markup):
It would also a good practice to have both sides validation. krt proposal is correct, but i would add Javascript validations to avoid useless execution of the server script.