Kalmykov Posted October 20, 2013 Share Posted October 20, 2013 I've been combing forums for 2 weeks now trying to find a way to have a working contact form on my portfolio site. I couldn't have fathomed how difficult this task is turning out to be. I'm a competent HTML and CSS developer. PHP, however, is new to me. I've been studying up on it at treehouse and understand the basic $_POST, echo, and !isset commands. My site is live at http://kovcreation.com/ I'm not married to the contact form that's on there but i understand it entirely. I'm just so frustrated after trying many different solutions I just want it to work !!! Any help is greatly appreciated Form HTML <div class="contact_form"> <div class="touch"> </div> <form id="contact_me_form" method="post" action="email.php"> <div class="error_contact" id="name_error">Name is Required</div> <input type="text" placeholder="Your Name (required)" id="name" class="textbox" /> <input type="text" name="email" id="email" placeholder="Your Email (required)" class="textbox email"> <div class="error_contact" id="comment_error">Message is Required</div> <textarea cols="25" rows="5" name="message" id="comment" class="textbox message" placeholder="Your Message ( Inquiry? , Freelance Work? , or Just to Say Hi...)"></textarea> <input type="image" src="img/send.png" alt="Send Message" name="submit" class="button submit_btn"> </form> </div> email php <?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "michael@kovcreation.com"; $email_subject = "Contact from portfolio site"; 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['name']) || !isset($_POST['email']) || !isset($_POST['message'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['name']; // required $email_from = $_POST['email']; // required $message = $_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,$name)) { $error_message .= 'The First Name you entered does not appear to be valid.<br />'; } } if(strlen($message) < 2) { $error_message .= 'The message 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($name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Message: ".clean_string($message)."\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); ?> <p>Thank you for contacting us. We will be in touch with you very soon.</p> <?php } ?> Thanks for reading email.php index.html style.css Quote Link to comment Share on other sites More sharing options...
alpine Posted October 20, 2013 Share Posted October 20, 2013 (edited) Can you describe the problem ? Or simply no email is sent ? Be aware that some hosts dont allow other email domains as FROM and REPLY TO in headers Edited October 20, 2013 by alpine Quote Link to comment Share on other sites More sharing options...
cyberRobot Posted October 21, 2013 Share Posted October 21, 2013 There appears to be an extra curly bracket here: <?php } } //<-- extra bracket here if(strlen($message) < 2) { $error_message .= 'The message you entered do not appear to be valid.<br />'; } ?> Also, you should remove the error suppression character from the call to the mail() function. Instead, you should test if the mail was accepted for delivery. For example: <?php if(mail($email_to, $email_subject, $email_message, $headers)) { //mail queued successfully } else { //mail failed } ?> Quote Link to comment Share on other sites More sharing options...
BrodaNoel Posted October 21, 2013 Share Posted October 21, 2013 (edited) died('We are sorry, but there appears to be a problem with the form you submitted.'); died() ? I think this should be die(); Edited October 21, 2013 by BrodaNoel Quote Link to comment Share on other sites More sharing options...
cyberRobot Posted October 21, 2013 Share Posted October 21, 2013 died() ? I think this should be die(); It's a user-defined function. <?php function died($error) { //.... } ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.