Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

instillsolution

macrumors newbie
Original poster
Mar 6, 2012
1
0
Hi Guys,

I'm trying to put together a contact form on my website using a free PHP form I downloaded and need some assistance. I don't know the first thing about PHP and need some assistance as far as redirecting the page to a fail/success page.

here is the PHP Code:

<?php
if(isset($_POST['email'])) {

// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "myemail@myemail.com";
$email_subject = "Contact Form for Instill Solutions";


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);
?>

<!-- include your own success html here -->

Thank you for contacting us. We will be in touch with you very soon.

<?php
}
?>


So what I want to happen is to have the errors go to certain pages or be able to have the error "posted" to that certain page.

If form submitted correctly go to success.html
If it's not, go to formerror.html and be able to display the error.

Right now it just goes to blank pages for all that. Any help would be greatly appreciated.

I'm just trying to get the pages to have all the content:

http://www.instillsolutions.com/thankyou.html

I only put the actual form on the home page:

http://www.instillsolutions.com
 
Put an ob_start() at the top of your script and an ob_end_flush() at the very bottom.

Then if you want to redirect you would use something like: header(“Location: /path/to/the/page.html”); die();

P.S. Have a read of filter_input() on php.net and replace all $_POST references will calls to filter_input(). filter_input() has built-in validation/sanitization routines.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.