0

I have this part of code in my webpage but it isn't working as it should.

<?php

 if(isset($_POST['email'])) {




$email_to = "[email protected]";

$email_subject = "Your email subject line";





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



    ?>

It should send e-mail to the given e-mail. Also , I want to make it show clear fields after sending e-mail and showing "Message sent". Please help me!

Nothing happens after adding error report. Here is my HTML form:

<form name="contactform" method="post" action="send_form_email.php">

                                <p>
                                    <input type="text" name="first_name" maxlength="50" size="30" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required wpcf7-use-title-as-watermark" title="First name">
                                </p>
                                <p>
                                    <input type="text" name="last_name" maxlength="50" size="30" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required wpcf7-use-title-as-watermark" title="Last name">
                                </p>
                                <p>
                                    <input type="text" name="email" maxlength="80" size="30" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email wpcf7-use-title-as-watermark" title="E-mail">
                                </p>
                                <p>
                                    <textarea name="comments" maxlength="1000" cols="25" rows="6" class="wpcf7-form-control  wpcf7-textarea wpcf7-use-title-as-watermark" title="Write your message here.."></textarea>
                                </p>

                                <input type="submit" value="Submit" class="wpcf7-form-control">
                                <div class="wpcf7-response-output wpcf7-display-none"></div>


                            </form>
8
  • 1
    Start by removing the @ symbol in mail(). You're masking potential errors. Something you're probably not checking for. Commented Nov 18, 2014 at 17:14
  • @Fred-ii- still not working Commented Nov 18, 2014 at 17:18
  • 1
    Your code's execution relies on "email" being set. Add error reporting, by checking the clickable link I gave you. Commented Nov 18, 2014 at 17:18
  • @Fred-ii- I know that my e-mail have to be set.And it is set I just removed from this code here.In website files it is set. Commented Nov 18, 2014 at 17:23
  • 1
    Not your email, this one $_POST['email'] Commented Nov 18, 2014 at 17:28

1 Answer 1

1

You're missing a closing brace } after mail():

@mail($email_to, $email_subject, $email_message, $headers);

?>

Modify it to:

@mail($email_to, $email_subject, $email_message, $headers);

}

?>

Having error reporting set, should have shown you something like this:

Parse error: syntax error, unexpected end of file in /path/to/your/send_form_email.php on line 134

Add error reporting to the top of your file(s) which will help find errors.

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

Sidenote: Error reporting should only be done in staging, and never production.

Sign up to request clarification or add additional context in comments.

6 Comments

Thank you very much. It is now sending e-mails. Can you help me make it show message box and clearing the fields?
I know JS. I know exactly what I have to add, I just don't know where should I add it.
You can try inside the inputs themselves. @user3787300 Plus, maybe add JS inside the form tag itself, or trigger it with the submit button.
+1 You are a trooper for wading through all of that code
@JohnConde Thank you John. Actually, I put it in my IDE, found the missing brace in a jiffy. However, I did test it fully before posting it as an answer :)
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.