PHP Contact Form Help - Redirect to a success page

Discussion in 'Web Design and Development' started by instillsolution, Mar 6, 2012.

  1. instillsolution macrumors newbie

    Joined:
    Mar 6, 2012
    #1
    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
     
  2. stomer macrumors 6502a

    Joined:
    Apr 2, 2007
    Location:
    Leeds, UK
    #2
    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.
     

Share This Page