PHP Mail form not generating mail [duplicate] - php

This question already has answers here:
PHP mail function doesn't complete sending of e-mail
(31 answers)
Closed 8 years ago.
OK, my php email script is hosted on another server to my form. It has worked fine until recently, but a couple of unrelated changes seem to have buggered things up. I think I have an idea what might be going on, but let me explain the problem first.
At first I thought it was an issue with depricated !eregi commands. So, I changed them all to !preg_match, but that apparently wasn't the only issue.
The form appears to work, there are no errors being reported, and the success page is parsing, but no email is ever sent (yes, I checked my spam folder). Around the same time the issues started, I moved the website and domain that the original php mail script is hosted on to a different server that (one that I can't host php files on), but kept the php mail script on the old server. Of course, without the domain pointing to that web server the external referencing stopped working. So, I just dropped the file into a subdomain on the old server, and re-referenced the form accordingly. It now connects fine, and as I said, parses the script through to the success page.
The email hosting for this server was never changed. So, ththere shouldn't be an issue, but I think the problem is related to that domain name change. Any thoughts? Script and form address below:
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
if(isset($_POST['email'])) {
// set the EMAIL TO options
$email_to = "jr#creativeheat.co.uk";
$email_bcc = "jr#creativeheat.co.uk";
$email_subject = "Website booking inquiry";
// grab referal info from POST
$path = explode('/', $_SERVER['HTTP_REFERER']);
$referer = $path[2];
// redirect to error page
function died($error) {
$path = explode('/', $_SERVER['HTTP_REFERER']);
$referer = $path[2];
header( 'Location: http://'.$referer.'/'.$error ) ;
exit;
}
// grab the checkbox values and change them to strings
if (isset($_POST['booking_0'])) { $book1 = $_POST['booking_0']; if( $book1 == 'Bedroom(s)') { $book1 = " The Bedroom(s) \n"; }} else {$book1 = "\n";}
if (isset($_POST['booking_1'])) { $book2 = $_POST['booking_1']; if( $book2 == 'Meeting Room') { $book2 = " The Meeting Room \n";}} else {$book2 = "\n";}
if (isset($_POST['booking_2'])) { $book3 = $_POST['booking_2']; if( $book3 == 'Barn') { $book3 = " The Barn \n"; }} else {$book3 = "\n";}
if (isset($_POST['booking_3'])) { $book4 = $_POST['booking_3']; if( $book4 == 'Campsite') { $book4 = " The Campsite \n";}} else {$book4 = "\n";}
// clear the ERRORTYPE & ERROR_MESSAGE variables
$errortype = "";
$error_message = "";
// then check for an all false in the checkbox group
if (!isset($_POST['booking_0']) && !isset($_POST['booking_1']) && !isset($_POST['booking_2']) && !isset($_POST['booking_3'])) {
// provided none of the checkboxes are ticked set the DIED function parameter to ERRORTYPE = BOOKINGERR
$error_message = 'error';
$errortype = 'bookingerr';
if(strlen($error_message) > 0) {
died($errortype) ;
}
// alternate bruteforce redirect to NO BOOKING TYPE SELECTED page
// header( 'Location: http://'.$referer.'/booking/'.$errortype ) ;
}
// check everything else
// reset the ERROR variables
$errortype = "";
$error_message = "";
// check the ISSET state of the remaining required fields
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['number']) ||
!isset($_POST['email']) ||
!isset($_POST['adults']) ||
!isset($_POST['children']) ||
!isset($_POST['from_date']) ||
!isset($_POST['to_date']) ||
!isset($_POST['disabled']) ||
!isset($_POST['parking']) ||
!isset($_POST['general'])) {
// redirect to GENERAL INVALIDATION page
$error_message = 'error';
$errortype = 'requirederror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
// set FIELD variables
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$telephone = $_POST['number']; // required
$email_from = $_POST['email']; // required
$adults = $_POST['adults']; // required
$children = $_POST['children']; // required
$fdate = $_POST['from_date']; // required
$tdate = $_POST['to_date']; // required
$disabled = $_POST['disabled']; // not required
$parking = $_POST['parking']; // not required
$comments = $_POST['general']; // not required
// begin INVALID field character checks
$email_exp = "/^[A-Z0-9._%-]+#[A-Z0-9.-]+\.[A-Z]{2,4}$/i";
$errortype = "";
$error_message = "";
if(!preg_match($email_exp,$email_from)) {
// redirect to INVALID EMAIL page
$error_message = 'error';
$errortype = 'emailinvalid';
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$string_exp = "/^[a-z .'-]+$/i";
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$first_name)) {
// redirect to INVALID FIRSTNAME page
$error_message = 'error';
$errortype = 'fnameerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$last_name)) {
// redirect to INVALID LASTNAME page
$error_message = 'error';
$errortype = 'lnameerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$errortype = "";
$error_message = "";
if(strlen($comments) < 2 && strlen($comments) > 0) {
// redirect to INVALID COMMENTS page
$error_message = 'error';
$errortype = 'commentserror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$string_exp = "/^[0-9 .-]+$/i";
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$telephone)) {
// redirect to INVALID TELEPHONE page
$error_message = 'error';
$errortype = 'telephoneerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
// failsafe
if(strlen($error_message) > 0) {
died($errortype) ;
}
// begin EMAIL MESSAGE creation
$email_message = "Form details below.\n\n";
// remove ILLEGAL data from submitted fields
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
// set EMAIL_MESSAGE variable from data gathered from form
$email_message .= "Name: ".clean_string($first_name)." ".clean_string($last_name)."\n";
$email_message .= "Contact number: ".clean_string($telephone)."\n";
$email_message .= "Email address: ".clean_string($email_from)."\n\n";
$email_message .= "Interested in availability of the following: \n";
$email_message .= $book1.$book2.$book3.$book4."\n";
$email_message .= "Date from: ".clean_string($fdate)."\n";
$email_message .= "Date to: ".clean_string($tdate)."\n\n";
$email_message .= "Number of...\n";
$email_message .= "Adults: ".clean_string($adults)."\n";
$email_message .= "Children: ".clean_string($children)."\n\n";
$email_message .= "Disabled? ".clean_string($disabled)."\n";
$email_message .= "Parking? ".clean_string($parking)."\n\n";
$email_message .= "Additional Information: \n\n";
$email_message .= clean_string($comments);
// create EMAIL HEADERS
$headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'Bcc: '.$email_bcc."\r\n".'X-Mailer: PHP/' . phpversion();
#mail($email_to, $email_subject, $email_message, $headers);
// redirect to SUCCESS page
header( 'Location: http://'.$referer.'/success' ) ;
exit;
}
?>
form address: http://www.claverhammeetinghouse.org.uk/booking/
EDIT:
After installing PHPmailer the code now looks like this:
<?php
// new
require_once('class.phpmailer.php');
//end new
ini_set("display_errors", "1");
error_reporting(E_ALL);
if(isset($_POST['email'])) {
// set the EMAIL TO options
$email_to = "jr#creativeheat.co.uk";
$email_bcc = "jr#creativeheat.co.uk";
$email_subject = "Website booking inquiry";
// grab referal info from POST
$path = explode('/', $_SERVER['HTTP_REFERER']);
$referer = $path[2];
// redirect to error page
function died($error) {
$path = explode('/', $_SERVER['HTTP_REFERER']);
$referer = $path[2];
header( 'Location: http://'.$referer.'/'.$error ) ;
exit;
}
// grab the checkbox values and change them to strings
if (isset($_POST['booking_0'])) { $book1 = $_POST['booking_0']; if( $book1 == 'Bedroom(s)') { $book1 = " The Bedroom(s) \n"; }} else {$book1 = "\n";}
if (isset($_POST['booking_1'])) { $book2 = $_POST['booking_1']; if( $book2 == 'Meeting Room') { $book2 = " The Meeting Room \n";}} else {$book2 = "\n";}
if (isset($_POST['booking_2'])) { $book3 = $_POST['booking_2']; if( $book3 == 'Barn') { $book3 = " The Barn \n"; }} else {$book3 = "\n";}
if (isset($_POST['booking_3'])) { $book4 = $_POST['booking_3']; if( $book4 == 'Campsite') { $book4 = " The Campsite \n";}} else {$book4 = "\n";}
// clear the ERRORTYPE & ERROR_MESSAGE variables
$errortype = "";
$error_message = "";
// then check for an all false in the checkbox group
if (!isset($_POST['booking_0']) && !isset($_POST['booking_1']) && !isset($_POST['booking_2']) && !isset($_POST['booking_3'])) {
// provided none of the checkboxes are ticked set the DIED function parameter to ERRORTYPE = BOOKINGERR
$error_message = 'error';
$errortype = 'bookingerr';
if(strlen($error_message) > 0) {
died($errortype) ;
}
// alternate bruteforce redirect to NO BOOKING TYPE SELECTED page
// header( 'Location: http://'.$referer.'/booking/'.$errortype ) ;
}
// check everything else
// reset the ERROR variables
$errortype = "";
$error_message = "";
// check the ISSET state of the remaining required fields
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['number']) ||
!isset($_POST['email']) ||
!isset($_POST['adults']) ||
!isset($_POST['children']) ||
!isset($_POST['from_date']) ||
!isset($_POST['to_date']) ||
!isset($_POST['disabled']) ||
!isset($_POST['parking']) ||
!isset($_POST['general'])) {
// redirect to GENERAL INVALIDATION page
$error_message = 'error';
$errortype = 'requirederror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
// set FIELD variables
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$telephone = $_POST['number']; // required
$email_from = $_POST['email']; // required
$adults = $_POST['adults']; // required
$children = $_POST['children']; // required
$fdate = $_POST['from_date']; // required
$tdate = $_POST['to_date']; // required
$disabled = $_POST['disabled']; // not required
$parking = $_POST['parking']; // not required
$comments = $_POST['general']; // not required
// begin INVALID field character checks
$email_exp = "/^[A-Z0-9._%-]+#[A-Z0-9.-]+\.[A-Z]{2,4}$/i";
$errortype = "";
$error_message = "";
if(!preg_match($email_exp,$email_from)) {
// redirect to INVALID EMAIL page
$error_message = 'error';
$errortype = 'emailinvalid';
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$string_exp = "/^[a-z .'-]+$/i";
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$first_name)) {
// redirect to INVALID FIRSTNAME page
$error_message = 'error';
$errortype = 'fnameerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$last_name)) {
// redirect to INVALID LASTNAME page
$error_message = 'error';
$errortype = 'lnameerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$errortype = "";
$error_message = "";
if(strlen($comments) < 2 && strlen($comments) > 0) {
// redirect to INVALID COMMENTS page
$error_message = 'error';
$errortype = 'commentserror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
$string_exp = "/^[0-9 .-]+$/i";
$errortype = "";
$error_message = "";
if(!preg_match($string_exp,$telephone)) {
// redirect to INVALID TELEPHONE page
$error_message = 'error';
$errortype = 'telephoneerror' ;
if(strlen($error_message) > 0) {
died($errortype) ;
}
}
// failsafe
if(strlen($error_message) > 0) {
died($errortype) ;
}
// begin EMAIL MESSAGE creation
$email_message = "Form details below.\n\n";
// remove ILLEGAL data from submitted fields
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
// set EMAIL_MESSAGE variable from data gathered from form
$email_message .= "Name: ".clean_string($first_name)." ".clean_string($last_name)."\n";
$email_message .= "Contact number: ".clean_string($telephone)."\n";
$email_message .= "Email address: ".clean_string($email_from)."\n\n";
$email_message .= "Interested in availability of the following: \n";
$email_message .= $book1.$book2.$book3.$book4."\n";
$email_message .= "Date from: ".clean_string($fdate)."\n";
$email_message .= "Date to: ".clean_string($tdate)."\n\n";
$email_message .= "Number of...\n";
$email_message .= "Adults: ".clean_string($adults)."\n";
$email_message .= "Children: ".clean_string($children)."\n\n";
$email_message .= "Disabled? ".clean_string($disabled)."\n";
$email_message .= "Parking? ".clean_string($parking)."\n\n";
$email_message .= "Additional Information: \n\n";
$email_message .= clean_string($comments);
// create EMAIL HEADERS
$headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'Bcc: '.$email_bcc."\r\n".'X-Mailer: PHP/' . phpversion();
//new
new PHPMailer($email_to, $email_subject, $email_message, $headers);
//end new
// old #mail($email_to, $email_subject, $email_message, $headers);
//end old
// redirect to SUCCESS page
header( 'Location: http://'.$referer.'/success' ) ;
exit;
}
?>

Try using only "\n" instead of "\r\n" on $headers as documented in the PHP reference. http://php.net/manual/de/function.mail.php

Related

php form validation not working: email sends with empty fields

I am having some difficulty in my form not working as expected. Effectively when I click the submit button it will send the email even when I (think) have set up validation to stop it from sending until all of the relevant fields are completed.
<?php
$page_title = "EcoPiggy: PHP Contact Us- Testing";
// define variables and set to empty values
$firstName = $lastName = $email = $telephone = $message = $marketingConsent = $copyEmail = "";
$firstNameErr = $lastNameErr = $emailErr = $telephoneErr = $messageErr = "";
if (isset($_POST['signup'])) {
if (!empty($_POST['tracey'])) {
die;
}
$marketingConsent = ($_POST["marketingConsent"]);
$copyEmail = ($_POST["copyEmail"]);
if (empty($_POST["firstName"])) {
$firstNameErr = "* First Name is required";
} else {
$firstName = test_input($_POST["firstName"]);
if (!preg_match("/^[a-zA-Z0-9 ]*$/", $firstName)) {
$firstNameErr = "* Only letters and white space allowed";
}
$min = 3;
if (strlen($firstName) < $min) {
$firstNameErr = "Validation failed: Too Small minimum 3 characters";
}
$max = 45;
if (strlen($firstName) > $max) {
$firstNameErr = "Validation failed: Too Large maximum 45 characters";
}
}
if (empty($_POST["lastName"])) {
$lastNameErr = "* Last Name is required";
} else {
$lastName = test_input($_POST["lastName"]);
if (!preg_match("/^[a-zA-Z0-9 ]*$/", $lastName)) {
$lastNameErr = "* Only letters and white space allowed";
}
$min = 3;
if (strlen($lastName) < $min) {
$lastNameErr = "Validation failed: Too Small minimum 3 characters";
}
$max = 45;
if (strlen($lastName) > $max) {
$lastNameErr = "Validation failed: Too Large maximum 45 characters";
}
}
if (empty($_POST["email"])) {
$emailErr = "* email address is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "* Invalid email format";
}
$min = 6;
if (strlen($email) < $min) {
$emailErr = "Validation failed: Too Small minimum 6 characters";
}
$max = 60;
if (strlen($email) > $max) {
$emailErr = "Validation failed: Too Large maximum 60 characters";
}
}
if (empty($_POST["telephone"])) {
$telephoneErr = "* Please enter your telephone number";
} else {
$telephone = test_input($_POST["telephone"]);
if (!preg_match("/^[1-9][0-9]{6-13}*$/", $telephone)) {
$telephoneErr = "* Only numbers and white space allowed";
}
$min = 6;
if (strlen($telephone) < $min) {
$lastNameErr = "Validation failed: Too Small minimum 6 characters";
}
$max = 13;
if (strlen($telephone) > $max) {
$telephoneErr = "Validation failed: Too Large maximum 13 characters";
}
}
if (empty($_POST["message"])) {
$messageErr = "* Your message is required";
} else {
$message = test_input($_POST["message"]);
$min = 3;
if (strlen($message) < $min) {
$messageErr = "Validation failed: Too Small minimum 3 characters";
}
$max = 1000;
if (strlen($message) > $max) {
$messageErr = "Validation failed: Too Large maximum 45 characters";
}
}
if ($marketingConsent == 0) {
$marketingConsent = "Thank you for trusting us to contact periodically with 3rd party promotions";
} else {
$marketingConsent = "I do not want the information to be used by anybody for direct marketing purposes";
}
$create_email = '<ul>';
$create_email .='<li>First Name: ' . $firstName . '</li>';
$create_email .='<li>Last Name: ' . $lastName . '</li>';
$create_email .='<li>Telephone Number: ' . $telephone . '</li>';
$create_email .='<li>Email address: ' . $email . '</li>';
$create_email .='<li>Your message: ' . $message . '</li>';
$create_email .='<li>Marketing consent: ' . $marketingConsent . '</li>';
$create_email .='<li>Cc: ' . $copyEmail . '</li>';
$create_email .= '</ul>';
$header1 = "From: webform#ecopiggy.co.uk \r\n";
$header1 .= "Reply-To: {$email} \r\n";
if ($copyEmail == 1) {
$header1 .= "Cc: {$email}\r\n";
} else {
$header1 .= "";
}
$header1 .= "MIME-Version: 1.0" . "\r\n";
$header1 .= "Content-Type: text/html; charset=ISO-8859-1";
$to = "hello#ecopiggy.co.uk";
$subject = 'Ecopiggy - Contact-Us' . strftime("%T", time());
$message = $create_email;
$headers = $header1;
$result = mail($to, $subject, $message, $headers);
if (isset($result)) {
redirect_to("thankyou.php");
} else {
redirect_to("contact-us.php");
}
}
?>
Can anyone assist in where this validation is going wrong?
Many Thanks,
Asa.
The problem is, even though you're validating your form inputs you're not checking whether any error exists or not before constructing the mail i.e whether $firstNameErr, $lastNameErr etc. are empty or not.
if(empty($firstNameErr) && empty($lastNameErr) && empty($emailErr) && empty($telephoneErr) && empty($messageErr)){
// construct the mail and send it
}else{
// display error messages
}
So your existing code should be like this:
<?php
$page_title = "EcoPiggy: PHP Contact Us- Testing";
// define variables and set to empty values
$firstName = $lastName = $email = $telephone = $message = $marketingConsent = $copyEmail = "";
$firstNameErr = $lastNameErr = $emailErr = $telephoneErr = $messageErr = "";
if (isset($_POST['signup'])) {
if (!empty($_POST['tracey'])) {
die;
}
$marketingConsent = ($_POST["marketingConsent"]);
$copyEmail = ($_POST["copyEmail"]);
if(empty($_POST["firstName"])) {
$firstNameErr = "* First Name is required";
} else {
$firstName = test_input($_POST["firstName"]);
if (!preg_match("/^[a-zA-Z0-9 ]*$/",$firstName)) {
$firstNameErr = "* Only letters and white space allowed";
}
$min=3;
if(strlen($firstName) < $min) {
$firstNameErr = "Validation failed: Too Small minimum 3 characters";
}
$max=45;
if(strlen($firstName) > $max) {
$firstNameErr = "Validation failed: Too Large maximum 45 characters";
}
}
if(empty($_POST["lastName"])) {
$lastNameErr = "* Last Name is required";
} else {
$lastName = test_input($_POST["lastName"]);
if (!preg_match("/^[a-zA-Z0-9 ]*$/",$lastName)) {
$lastNameErr = "* Only letters and white space allowed";
}
$min=3;
if(strlen($lastName) < $min) {
$lastNameErr = "Validation failed: Too Small minimum 3 characters";
}
$max=45;
if(strlen($lastName) > $max) {
$lastNameErr = "Validation failed: Too Large maximum 45 characters";
}
}
if(empty($_POST["email"])) {
$emailErr = "* email address is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "* Invalid email format";
echo $emailErr;
}
$min=6;
if(strlen($email) < $min) {
$emailErr = "Validation failed: Too Small minimum 6 characters";
}
$max=60;
if(strlen($email) > $max) {
$emailErr = "Validation failed: Too Large maximum 60 characters";
}
}
if(empty($_POST["telephone"])) {
$telephoneErr = "* Please enter your telephone number";
} else {
$telephone = test_input($_POST["telephone"]);
if (!preg_match("/^[1-9][0-9]{6-13}*$/",$telephone)) {
$telephoneErr = "* Only numbers and white space allowed";
}
$min=6;
if(strlen($telephone) < $min) {
$lastNameErr = "Validation failed: Too Small minimum 6 characters";
}
$max=13;
if(strlen($telephone) > $max) {
$telephoneErr = "Validation failed: Too Large maximum 13 characters";
}
}
if(empty($_POST["message"])) {
$messageErr = "* Your message is required";
} else {
$message = test_input($_POST["message"]);
$min=3;
if(strlen($message) < $min) {
$messageErr = "Validation failed: Too Small minimum 3 characters";
}
$max=1000;
if(strlen($message) > $max) {
$messageErr = "Validation failed: Too Large maximum 45 characters";
}
}
if($marketingConsent == 0) {
$marketingConsent = "Thank you for trusting us to contact periodically with 3rd party promotions";
} else {
$marketingConsent = "I do not want the information to be used by anybody for direct marketing purposes";
}
if(empty($firstNameErr) && empty($lastNameErr) && empty($emailErr) && empty($telephoneErr) && empty($messageErr)){
$create_email = '<ul>';
$create_email .='<li>First Name: '.$firstName.'</li>';
$create_email .='<li>Last Name: '.$lastName.'</li>';
$create_email .='<li>Telephone Number: '.$telephone.'</li>';
$create_email .='<li>Email address: '.$email.'</li>';
$create_email .='<li>Your message: '.$message.'</li>';
$create_email .='<li>Marketing consent: '.$marketingConsent.'</li>';
$create_email .='<li>Cc: '.$copyEmail.'</li>';
$create_email .= '</ul>';
echo $create_email;
$header1 = "From: webform#ecopiggy.co.uk \r\n";
$header1 .= "Reply-To: {$email} \r\n";
if ($copyEmail == 1) {
$header1 .= "Cc: {$email}\r\n";
} else {
$header1 .= "";
}
$header1 .= "MIME-Version: 1.0" ."\r\n";
$header1 .= "Content-Type: text/html; charset=ISO-8859-1";
$to = "hello#ecopiggy.co.uk";
$subject = 'Ecopiggy - Contact-Us' .strftime("%T", time());
$message = $create_email;
$headers = $header1;
$result = mail($to, $subject, $message, $headers);
if (isset($result)) {
redirect_to("thankyou.php");
} else {
redirect_to("contact-us.php");
}
}else{
// display errors
}
}
?>
You are doing browser side validation and for that purpose javascript is best. http://www.w3schools.com/js/js_validation.asp this is the link where you can find validation.
and as you mention that you are using HYML5 so just add "required " in your tag so it means this field is mandatory.there are other predefined validation are available in HTML5
Your script clears all of the variables, then checks $_POST variables. However when the check is then passed, you are not setting the new value - unless there is a test_input function you haven't shown above:
$telephone = test_input($_POST["telephone"]);
So at the top of the page you set
$telephone = '';
You then check if
$_POST['telephone'];
is valid, and if it is you set $telephone to a value that has no way of resolving. Then in your email you try to send $telephone, but that value is still null.

Add a part of my form to the e-mail i receive using PHP

In my contact form i recently added a selector ( http://shopzuinig.nl/contact.html ) and styled it the way i wanted, but when i fill in the form and press send, the choice for a location is not included in the e-mail i receive. Can someone provide me with the PHP code to make this happen?
Here is my current PHP code:
<?php
error_reporting (E_ALL ^ E_NOTICE);
$post = (!empty($_POST)) ? true : false;
$replyto='restaurant#dellitalia.nl';
$subject = 'Verzoek via de website';
if($post)
{
function ValidateEmail($email)
{
$regex = "/([a-z0-9_\.\-]+)". # name
"#". # at
"([a-z0-9\.\-]+){2,255}". # domain & possibly subdomains
"\.". # period
"([a-z]+){2,10}/i"; # domain extension
$eregi = preg_replace($regex, '', $email);
return empty($eregi) ? true : false;
}
$name = stripslashes($_POST['name']);
$email = trim($_POST['email']);
$message = stripslashes($_POST['message']);
$phone = stripslashes($_POST['phone']);
$answer = trim($_POST['answer']);
$verificationanswer="6"; // plz change edit your human answer
$from=$email;
$to=$replyto;
$error = '';
$headers= "From: $name <" . $email . "> \n";
$headers.= "Reply-to:" . $email . "\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers = "Content-Type: text/html; charset=utf-8\n".$headers;
// Checks Name Field
if(!$name || !$email || $email && !ValidateEmail($email) || $answer <> $verificationanswer || !$message || strlen($message) < 1)
{
$error .= 'De velden zijn niet correct ingevuld.<br />';
}
if(!$error)
{
$messages.="Name: $name <br>";
$messages.="Email: $email <br>";
$messages.="Message: $message <br>";
$mail = mail($to,$subject,$messages,$headers);
if($mail)
{
echo 'OK';
if($autorespond == "yes")
{
include("autoresponde.php");
}
}
}
else
{
echo '<div class="error">'.$error.'</div>';
}
}
?>
Location Missing in your message. Include location to get location details in your mail.
if(!$error)
{
$mydropdown=$_POST['mydropdown'];
$mydropdown=mysql_real_escape_string($mydropdown);
$messages.="Name: $name <br>";
$messages.="Email: $email <br>";
$messages.="Message: $message <br>";
$messages.="Location: $mydropdown<br>"; // Missing. Include Location Here
$mail = mail($to,$subject,$messages,$headers);
if($mail)
{
echo 'OK';
if($autorespond == "yes")
{
include("autoresponde.php");
}
}
}

insert form data into table

My form emails data to customer ok, I also need it to save that data to a table called card, which it doesn't do. Please let me know where I'm going wrong. I'm almost certain it's something to do with when I connect to the DB.
<?php
if(isset($_POST['email'])) {
$email_to = ($_POST['email']);
$email_subject = "Customer Registration";
function died($error) {
// sese
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 />";
die();
}
// siati data
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['pay_address1']) ||
!isset($_POST['pay_address2']) ||
!isset($_POST['pay_address3']) ||
!isset($_POST['pay_address4']) ||
!isset($_POST['pay_contact_no']) ||
!isset($_POST['email']) ||
!isset($_POST['password']) ||
!isset($_POST['security'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // manaomia
$last_name = $_POST['last_name']; // manaomia
$address1 = $_POST['pay_address1']; // manaomia
$address2 = $_POST['pay_address2']; // manaomia
$address3 = $_POST['pay_address3']; // manaomia
$address4 = $_POST['pay_address4']; // manaomia
$reference = $_POST['email']; // manaomia
$customer_pass = $_POST['password']; // manaomia
$contact_no = $_POST['pay_contact_no']; // pule oe
$security = $_POST['security']; // manaomia
$dbconn = pg_connect("host=127.0.0.1 dbname=ina user=suser password=ABCDEFG") or die('Could not connect: ' . pg_last_error());
$query = "INSERT INTO card (reference, first_name, last_name, address1, address2, address3, address4, contact_no, customer_pass) VALUES ($reference, $first_name, $last_name, $address1, $address2, $address3, $address4, $contact_no, $customer_pass)";
$result = pg_query($query);
if (!$result)
{
echo "Customer update failed!!";
} else
{
echo "Update was successfull; ";
}
pg_close();
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+#[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$reference)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid. <br />';
}
if(strlen($security) != 5) {
$error_message .= 'The Translation you entered do not appear to be valid. <br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Your login details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Login ID: ".clean_string($reference)."\n";
$email_message .= "Password: ".clean_string($password)."\n";
// email headers
$headers = 'From: ' . $from . "\r\n";
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
#mail($email_to, $email_subject, $email_message, $headers);
?>
Thank you for registering. An email containing your login id and a password was sent to the provided email address. Please check your mail and then log in to continue.
NEXT Button
<?php
}
?>
$dbconn = pg_connect("host=127.0.0.1 dbname=ina user=suser password=ABCDEFG") or die('Could not connect: ' . pg_last_error());
$query = "INSERT INTO card ('reference'=>$reference, 'first_name'=>$first_name, 'last_name'=>$last_name, 'address1'=>$address1, 'address2'=>$address2, 'address3'=>$address3, 'address4'=>$address4, 'contact_no'=>$contact_no, 'customer_pass'=>$customer_pass,'security'=>$security)";
//or use where condition
//INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
//VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

How to make a list in a PHP contact form mandatory

I have an existing contact form that uses the PHP file below to send emails.
I need make the list of 'market_segment' mandatory. How can I modify this file so at least one option is selected, otherwise an error is shown?
Many thanks!
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "email#email.com";
$email_subject = "Subject";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form your submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['title']) ||
!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['market_segment']) ||
!isset($_POST['company_name']) ||
!isset($_POST['business_address1']) ||
!isset($_POST['business_address2']) ||
!isset($_POST['city']) ||
!isset($_POST['post_code']) ||
!isset($_POST['where']) ||
!isset($_POST['code'])) {
died('We are sorry, but there appears to be a problem with the form your submitted.');
}
$one = $_POST['one']; // not required
$two = $_POST['two']; // not required
$three = $_POST['three']; // not required
$four = $_POST['four']; // not required
$five = $_POST['five']; // not required
$title = $_POST['title']; // not required
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // required
$market_segment = $_POST['market_segment']; // required
$company_name = $_POST['company_name']; // required
$business_address1 = $_POST['business_address1']; // required
$business_address2 = $_POST['business_address2']; // required
$city = $_POST['city']; // required
$post_code = $_POST['post_code']; // required
$current_yes = $_POST['current_yes']; // not required
$current_no = $_POST['current_no']; // not required
$future_yes = $_POST['future_yes']; // not required
$future_no = $_POST['future_no']; // not required
$where = $_POST['where']; // not required
$code = $_POST['code']; // required
$error_message = "";
$email_exp = "^[A-Z0-9._%-]+#[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!eregi($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
$string_exp = "^[a-z0-9 .'-]+$";
if(!eregi($string_exp,$company_name)) {
$error_message .= 'The Company Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 0) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
$string_exp = "^[0-9 .-]+$";
if(!eregi($string_exp,$telephone)) {
$error_message .= 'The Telephone Number you entered does not appear to be valid.<br />';
}
$string_exp = "^7575$";
if(!eregi($string_exp,$code)) {
$error_message .= 'The Verification Code you entered does not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$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 .= "President Creme Brulee with Vanilla Pods: ".clean_string($one)."\n";
$email_message .= "President Creme Brulee with Salted Butter Caramel: ".clean_string($two)."\n";
$email_message .= "President Cheesecake: ".clean_string($three)."\n";
$email_message .= "Galbani Panna Cotta: ".clean_string($four)."\n";
$email_message .= "Galbani Tiramisu: ".clean_string($five)."\n";
$email_message .= "Title: ".clean_string($title)."\n";
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";
$email_message .= "Market Segment: ".clean_string($market_segment)."\n";
$email_message .= "Company Name: ".clean_string($company_name)."\n";
$email_message .= "Business Address 1: ".clean_string($business_address1)."\n";
$email_message .= "Business Address 2: ".clean_string($business_address2)."\n";
$email_message .= "City: ".clean_string($city)."\n";
$email_message .= "Post Code: ".clean_string($post_code)."\n";
$email_message .= "Current Customer: ".clean_string($current_yes)."\n";
$email_message .= "Existing Customer: ".clean_string($current_no)."\n";
$email_message .= "Future Marketing Accepted: ".clean_string($future_yes)."\n";
$email_message .= "Future Marketing Declined: ".clean_string($future_no)."\n";
$email_message .= "Where: ".clean_string($where)."\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);
?>
<!-- include your own success html here -->
<link href="example.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-color: #FFF;
}
-->
</style>
yes
<?
}
?>
You can check if a variable is empty with this function:
bool empty ( mixed $var )
witch return a true if it's empty false otherwise, in your case:
// validation expected data exists
if(empty($_POST['first_name']) ||
empty($_POST['last_name']) ||
empty( $_POST['email']) ||
empty($_POST['telephone']) ||
empty($_POST['market_segment']) ||
empty($_POST['company_name']) ||
empty($_POST['company_name']) ||
empty($_POST['business_address1']) ||
empty($_POST['business_address2']) ||
empty($_POST['city']) ||
empty($_POST['post_code'])) {
died('We are sorry, but there appears to be a problem with the form your submitted.');
}

Two PHP forms on same page

I have two php forms on same page now the problem is I am calling them through an iframe but there captcha is not working though I am using the same script for both the forms with different input fields. Right now what happens is when we click first time on captcha and write correct captcha it take us to YOU HAVE ENTERED WRONG CAPTCHA and then we fill correct captcha then show us thanku...Why not it shows thanks for the first time when we enter correct captch??????
<?php
session_start();
$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, $url);
curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
$tuData = curl_exec($tuCurl);
curl_close($tuCurl);
$userip = explode(',',$tuData);
$ipcountry = str_replace('"', '', $userip[3]);
include "libmail.php";
$errors = '';
//print_r($_POST);
if(isset($_POST['email']))
{
if(empty($_SESSION['6_letters_code'] ) ||
strcasecmp($_SESSION['6_letters_code'], $_POST['captcha']) != 0)
{
$errors .= "You have entered wrong captcha code!";
}elseif($_FILES["userfile"]["size"] > 1048576)
{
$errors .= "You can upload maximum of 800kb file!";
}else{
$productsq = $_POST['productsq'];
$name = $_POST['name'];
$position = $_POST['position'];
$phone = $_POST['phone'];
$company = $_POST['company'];
$companyweb = $_POST['companyweb'];
$address = $_POST['address'];
$country = $_POST['country'];
$brief = $_POST['brief'];
$email = $_POST['email'];
$captcha = $_POST['captcha'];
$sender = $contact_email;
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
if(trim($productsq) !='')
$email_message .= "*I'm interested in : ".clean_string($productsq)."\n"."\n";
if(trim($name) !='')
$email_message .= "Full Name: ".clean_string($name)."\n"."\n";
if(trim($position) !='')
$email_message .= "Position/Title: ".clean_string($position)."\n"."\n";
if(trim($phone) !='')
$email_message .= "Phone: ".clean_string($phone)."\n"."\n";
if(trim($company) !='')
$email_message .= "Company Name: ".clean_string($company)."\n"."\n";
if(trim($companyweb) !='')
$email_message .= "Website URL: ".clean_string($companyweb)."\n"."\n";
if(trim($address) !='')
$email_message .= "Full Address: ".clean_string($address)."\n"."\n";
if(trim($country) !='')
$email_message .= "Country: ".clean_string($country)." (IP Address) : $ipcountry ".$_SERVER['REMOTE_ADDR']."\n"."\n";
if(trim($brief) !='')
$email_message .= "About Myself : ".clean_string($brief)."\n"."\n";
$random = mt_rand();
$m= new Mail; // create the mail
$m->From( $name."<$email>" );
$m->To( "abc#gmail.com" );
$m->Subject( "Form2 - ".$random );
$m->Body( $email_message);
$m->Priority(2) ;
if($_FILES["userfile"]["tmp_name"]){
move_uploaded_file($_FILES["userfile"]["tmp_name"], 'uploadedfiles/'.$_FILES["userfile"]["name"]);
$file_upload = 'uploadedfiles/'.$_FILES["userfile"]["name"];
$m->Attach( $file_upload) ;
}
$m->Send();
header('location:thankyou.php');
if($_FILES["userfile"]["tmp_name"]){
unlink($file_upload);
}
}
}
?>
A captcha image code is usually stored in a session variable. When you display the second form, you are overwriting the captcha from the first form.

Categories