PHP Contact Form won't send from mobile device - php

I pulled this code off some site to use in various forms on my website. But I had a friend text me today saying "hey I tried to contact you through your website." Which set off an alarm in my head... "you TRIED?" So I went into heavy test mode, and it seems the only thing my forms don't get emailed to my account is when I submit them from my phone. The worst part is that the site treats the submit as if the form was sent. There is no error message. Here is the code:
`
$email_to = "info#optiprintdesign.com";
$email_subject = "Contact Form Message - Opti Print and Design";
function died($error) {
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();
}
if(!isset($_POST['username']) ||
!isset($_POST['usercompany']) ||
!isset($_POST['email']) ||
!isset($_POST['userphone']) ||
!isset($_POST['usersite']) ||
!isset($_POST['userlocation']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$username = $_POST['username'];
$usercompany = $_POST['usercompany'];
$email_from = $_POST['email'];
$userphone = $_POST['userphone'];
$usersite = $_POST['usersite'];
$userlocation = $_POST['userlocation'];
$comments = $_POST['comments'];
$error_message = "";
$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.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$username)) {
$error_message .= 'The Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "Name: ".clean_string($username)."\n";
$email_message .= "Company: ".clean_string($usercompany)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Phone: ".clean_string($userphone)."\n";
$email_message .= "Website: ".clean_string($usersite)."\n";
$email_message .= "Location: ".clean_string($userlocation)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
#mail($email_to, $email_subject, $email_message, $headers);
?>

Please read up on Error Control Operators
PHP supports one error control operator: the at sign (#). When
prepended to an expression in PHP, any error messages that might be
generated by that expression will be ignored.

Related

PHP form to multiple recipients

I found and copied this code for sending an email via a form fill and it works, but I don't know anything about PHP coding.
I thought that I could add multiple addresses like ... $email_to: = "email1#email.com, email2#email.com, email3#email.com"; ... but this only sends to the last one in the list.
I know it seem simple to you guys, but I am not able to decipher the other posts about this subject, since the other code samples are not exactly like mine, and I know nothing about how the code works.
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "email1#email.com, email2#email.com, email3#email.com";
$email_subject = "Someone registered on website.com";
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 />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['cell_phone']) ||
!isset($_POST['text_me'])){
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$cell_phone = $_POST['cell_phone']; // required
$text_me = $_POST['text_me']; // required
$error_message = "";
$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.<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($cell_phone) < 2) {
$error_message .= 'Please enter your cell phone number.<br />';
}
if(strlen($text_me) < 2) {
$error_message .= 'Please choose whether we can text you or not.<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 .= "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 .= "Cell Phone: ".clean_string($cell_phone)."\n";
$email_message .= "Text Me?: ".clean_string($text_me)."\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);
?>```
... Please tell me what I can do to make it send to multiple emails.
Thanks in advance!
Dan

Displaying error message in php email form

I have a basic contact form that gets a persons name, email, and comments then emails it. All the fields are required and I have error checking for the inputs in my php file before it sends the email. But right now if there is an error with one of the inputs once submit is clicked it opens new page and displays the error message. How would I instead just show the error message below the input that was incorrect?
This is my php file:
<?php
if(isset($_POST['email'])) {
$email_to = "email#address.com";
$email_subject = "Personal Website Contact Form";
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 />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$comments = $_POST['comments']; // required
$error_message = "";
$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.<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($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "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 .= "Comments: ".clean_string($comments)."\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);
header("location:contact.html");
?>
You can you ajax request to do so. You can send a post request to your php file like this Ajax Post Request
and handle the request in php. Return the request errors or success message
Full example : Ajax Request with PHP

alert message box should appear if there occurs any error while validating the contact form

A alert box should appear if there occurs any error below while submitting the form. And there should also appear a message box if the form is submitted correctly.
The existing code takes me to the other pages when there are any errors occured. And also takes me to the other page when the form is submitted. I need the messsage box for the errors occured accoring to the given below code.
Below is my Php code
<?php
if(isset($_POST['Email'])) {
// CHANGE THE TWO LINES BELOW
$email_to = "jay44556677#gmail.com";
$email_subject = "website html form submissions";
function died($error) {
// your error code can go here
echo "We're sorry, but there's errors found with the form you submitted.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['Name']) ||
//!isset($_POST['last_name']) ||
!isset($_POST['Email']) ||
//!isset($_POST['telephone']) ||
!isset($_POST['Message'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['Name']; // required
//$last_name = $_POST['last_name']; // required
$email_from = $_POST['Email']; // required
//$telephone = $_POST['telephone']; // not required
$comments = $_POST['Message']; // required
$error_message = "";
$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.<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($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "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 .= "Comments: ".clean_string($comments)."\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);
?>
<!-- place your own success html below -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
die();
?>
There are several ways - ajax (as Barmar suggested) or just regular javascript function called on the button click (onClick()).
If you choose the first method you can find multitude of script examples here or elsewhere on the Internet. If you choose the latter method, then don't use the <input type="submit" /> but <input type="button" onclick="yourfunction();return false" />. The last bit (return false) is actually quite important. Among others you can check this topic; it might give you some further ideas.

send image and text as email with php

I have the following php email contact form, I want to make it possible for the users to include an image which would be sent together with the other text. for example instead of the first_name thing to have an image. thanks in advance!
<?php
if(isset($_POST['email'])) {
$email_to = "youremail#someone.com";
$email_subject = "yourSubject";
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 />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required
$error_message = "";
$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.<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($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "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 .= "Comments: ".clean_string($comments)."\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);
?>
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
You probably want to make an html email.
Add: $headers .= "Content-type: text/html\r\n";
And then use a standard img tag for your image
<img src="your_url />"
This is what you're looking for I believe. Please see section with the heading "Sending Email with Attachment"
http://webcheatsheet.com/php/send_email_text_html_attachment.php

Getting PHP parse error regarding required drop-down menu item selection in basic contact form

I'm creating a basic contact form with a few required fields and a required selection from a drop-down menu. The fill-in fields are working correctly, however the drop-down menu selection requirement is causing a parse error.
I commented out any instances of the drop-down menu requirement to find that the error is gone. So the error has something to do with the drop-down menu selection. According to the error logs, the problem is in line 49. I tried rewriting that line a few times without much success.
Is the error caused by something specifically in line 49 or is elsewhere in my syntax?
This is my first time writing PHP, so any help is greatly appreciated.
<?php
if(isset($_POST['email'])) {
// EMAIL and SUBJECT
$email_to = "xxx#xxx.com";
$email_subject = "Test Form Dev";
function died($error) {
// ERROR CODE
echo "We apologize for the inconvenience, but there were error(s) found with your form submission. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and correct the error(s).<br /><br />";
die();
}
// VALIDATION EXPECTED DATA EXISTS
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['inquiry']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // REQUIRED
$last_name = $_POST['last_name']; // REQUIRED
$email_from = $_POST['email']; // REQUIRED
$telephone = $_POST['telephone']; // NOT REQUIRED
$inquiry_type = $_POST['inquiry']; // REQUIRED
$comments = $_POST['comments']; // REQUIRED
$error_message = "";
$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.<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 />';
}
$inquiry_exp = 'Charter, Media, Broker,'; // drop-down menu options
if(strlen($inquiry) < 1) {
$error_message .= 'Please select inquiry type.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "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 .= "Inquiry Type: ".clean_string($inquiry)."\n";
$email_message .= "Comments: ".clean_string($comments)."\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);
?>
<!-- RETURN MESSAGE (HTML): SUCCESSFUL FORM SUBMISSION -->
<p>Thank-you message goes here.</p>
<?php
}
die();
?>
Edit: I'm building this form in a MAMP environment. I've read elsewhere that I need to create an htaccess file, but is that necessary for a local dev?
Edit 2: After looking around other forums, I learned that I have to break down the dropdown menu items individually in PHP. I got that accomplished, but am still getting Parse:syntax errors on line 98 (the last line) stating "unexpected $end". However, I cannot get the menu selection to populate in the generated email nor figure out what specifically is causing the error. I originally fixed my code according to the error log without success.
Here's my updated code:
<?php
if(isset($_POST['email'])) {
// EMAIL and SUBJECT
$email_to = "xxx#xxx.com";
$email_subject = "XXX";
function died($error) {
// ERROR CODE
echo "We apologize for the inconvenience, but there were error(s) found with your form submission. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and correct the error(s).<br /><br />";
die();
}
// VALIDATION EXPECTED DATA EXISTS
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['inquiry']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
$first_name = $_POST['first_name']; // REQUIRED
$last_name = $_POST['last_name']; // REQUIRED
$email_from = $_POST['email']; // REQUIRED
$telephone = $_POST['telephone']; // NOT REQUIRED
$comments = $_POST['comments']; // REQUIRED
$inquiry = $_POST['inquiry'];
if( empty( $inquiry ) || $inquiry == "null" )
// If there isn't a value for the dropdown, or they've selected the option
// that reads "Please select one" then return an error
die( "Please select your reason for inquiring on the drop-down menu." );
switch( $inquiry ){
case "Broker" : die(); break;
case "Press" : die(); break;
case "Charter" : die(); break;
default : die();
}
}
$error_message = "";
$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.<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($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "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 .= "Inquiry Type: ".clean_string($inquiry)."\n";
$email_message .= "Comments: ".clean_string($comments)."\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);
?>
<!-- place your own success html below -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
die();
?>
Can anyone provide any insight to what's causing the form to error out?
CHange if(strlen($inquiry) < 1){ ... on line 49 to if(strlen($inquiry_type) < 1)
Also change clean_string($inquiry) to clean_string($inquiry_type) on line 69
You haven't declared a $inquiry variable so the following lines will report errors:
if(strlen($inquiry) < 1) {
$email_message .= "Inquiry Type: ".clean_string($inquiry)."\n";
You do have a $inquiry_type variable so this is probably a typo.

Categories