Asmondien Posted August 15, 2013 Share Posted August 15, 2013 Hi , There I m little bit puzzled how to do something, and wonder if one of you can help me with that. I have two forms, on 2 separate pages and I would like to use one .php file to send the email. HTML from . . . <input class="buttonSubmit" type="submit" name="submit2" value="Send it!" /> and submit one for 1st form. Then I have the this PHP file. <?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "EMAIL HERE"; $email_subject = "SUBJECT HERE"; 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['phone']) || !isset($_POST['spamcheck']) || !isset($_POST['message'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $name = $_POST['name']; // required $email = $_POST['email']; // required $phone = $_POST['phone']; // required $message = $_POST['message']; // required $spamcheck = $_POST['spamcheck']; // required $error_message = ""; $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email)) { $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 Name you entered does not appear to be valid.<br />'; } $string_exp = '/[^A-Z]/'; if(!preg_match($string_exp,$phone)) { $error_message .= 'The Phone Number you entered does not appear to be valid.<br />'; } $string_exp = '/^[5]+$/'; if(!preg_match($string_exp,$spamcheck)) { $error_message .= 'The Number you have entered does not appeart 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)."\n"; $email_message .= "phone: ".clean_string($phone)."\n"; $email_message .= "message: ".clean_string($message)."\n"; // create email headers $headers = 'From: '.$email."\r\n". 'Reply-To: '.$email."\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 } ?> Okay. As you can see, I have validation there too. My first form doesn't have message box , but second does. Now. I know I would need " IF " there. Would that be. if (isset($_POST['submit1'])) { /* INCLUDE FORM ONE */ } else if (isset($_POST['submit2'])) { /* FORM TWO */ } Thanks Kind Regards Asmo Quote Link to comment https://forums.phpfreaks.com/topic/281203-two-html-forms-1-php-process-file/ Share on other sites More sharing options...
Psycho Posted August 15, 2013 Share Posted August 15, 2013 (edited) I would not rely upon input submit buttons to determine the page. I'm pretty sure that when a users presses their enter key to submit a form (as opposed to clicking the submit button) that the input button fields/values are not passed in the POST/GET data - or at least I don't believe it behaves consistently across browsers. Instead, include a hidden field in the forms to specify whether it is for1 or form2. <input type="hidden" name="form" name="form1" /> But, do yourself a favor and give them descriptive names! Then on the processing page, use that value (only where needed) to determine which processing to run when it needs to be different. In other words, if you have 9 fields on both forms that need to be processed the same and one for has a 10th field, don't copy and past all of the logic for the 9 fields and put them into if/else blocks. Instead do something like this $string_exp = '/^[5]+$/'; if(!preg_match($string_exp,$spamcheck)) { $error_message .= 'The Number you have entered does not appeart to be valid.<br />'; } if($form = 'form2' && strlen($message) < 2) { $error_message .= 'The Message you entered do not appear to be valid.<br />'; } Edited August 15, 2013 by Psycho Quote Link to comment https://forums.phpfreaks.com/topic/281203-two-html-forms-1-php-process-file/#findComment-1445180 Share on other sites More sharing options...
Asmondien Posted August 19, 2013 Author Share Posted August 19, 2013 HI, Thank for you reply. Okay. I done that. However , it's still doesnt work the way I want it. Actually, the first form. Doesn't get past through the validation. Which makes me believe I will need to set IF/ELSE as on the first form ( it's for newsletter ) , I need , name , phone and email. Thanks Quote Link to comment https://forums.phpfreaks.com/topic/281203-two-html-forms-1-php-process-file/#findComment-1445765 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.