Stop an Email from Sending on Error

I have a PHP page that is supposed to send an email on completion of a form. If certain portions are not filled out, the page is supposed to return an error and not send the email. Currently, the errors return, but the email is still sending. Any ideas on how to fix this?

Thanks!

[php]

Download Request


<?php if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "Whitepapers Download Request";
 
 
function died($error) {
    // your error code can go here
    echo "We are very sorry, but there were error(s) found with the form you submitted. ";
    echo "These errors appear below.<br /><br />";
    echo $error."<br /><br />";
    echo "Please go back and fix these errors.<br /><br />";
}

function send($sent) {
	echo $sent."";
	echo "Your request has been sent successfully! A representative will be in contact with you shortly.<br/><br/>";
}
 
// validation expected data exists
if(!isset($_POST['name']) ||
    !isset($_POST['email']) ||
    !isset($_POST['phone']) ||
    !isset($_POST['company'])) {
    died('We are sorry, but there appears to be a problem with the form you submitted.');      
}
 
$name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$phone = $_POST['phone']; // not required
$message = $_POST['company']; // required

 
$error_message = "";
$success="";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

if(!preg_match($email_exp,$email_from)) {
$error_message .= ‘The Email Address you entered does not appear to be valid.
’;
}
$string_exp = “/^[A-Za-z .’-]+$/”;
if(!preg_match($string_exp,$name)) {
$error_message .= ‘The Name you entered does not appear to be valid.
’;
}
if(strlen($message) < 2) {
$error_message .= ‘The Company you entered do not appear to be valid.
’;
}
if(strlen($error_message) > 0) {
died($error_message);
}
if(strlen($error_message) <= 0) {
send($success);
}
$email_message = “Form details below.\n\n”;

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}


$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Phone: ".clean_string($phone)."\n";
$email_message .= "Company: ".clean_string($company)."\n";
$email_message .= "Product: ".clean_string($product)."\n";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
‘X-Mailer: PHP/’ . phpversion();
mail($email_to, $email_subject, $email_message, $headers); }
?>

[/php]

Your Mail command is not part of an if/then statement meaning that i runs a the end of the script regardless of the error result. you need to move it to the error results if/then statement to get the desired results.

Sponsor our Newsletter | Privacy Policy | Terms of Service