shavedhead Posted September 13, 2014 Share Posted September 13, 2014 (edited) I am really sorry for my silly question.I need a contact form with just two fields: "Name" and "Phone", and "Submit" button.Don't know why, but couple PHP scripts I used before don't work this time.Many scripts from the net I found this week don't work correctly as well even if I change nothing.Finally I found one that works, however, there are 5 fields in the form.I eliminated 3 of them (and it still works), but I can't solve the problem how to change "email" to "phone".All efforts to do it were unsuccessful.Could you help me with that?Thanx a lot.Alex. <form name="contactform" method="post" action="contacts.php"> <label for="first_name">First Name *</label> <input type="text" name="first_name" maxlength="50" size="30"> <label for="email">Email Address *</label> <input type="text" name="email" maxlength="80" size="30"> <input type="submit" value="Submit"> </form> <?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "supetraveller@gmail.com"; $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['email'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // 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 />'; } $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 .= "Email: ".clean_string($email_from)."\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 } ?> Edited September 13, 2014 by shavedhead Quote Link to comment Share on other sites More sharing options...
ginerjm Posted September 14, 2014 Share Posted September 14, 2014 So - you've showed us some code. Where have you actually tried to make it a phone number? What is the hangup here? You've already showed that you can clean it up - so what's keeping you from the last step? I mean - the code is sloppy and hard to read and very disorganized, but it seems to be what you need. So - again - what's the hangup?? Quote Link to comment Share on other sites More sharing options...
jcbones Posted September 14, 2014 Share Posted September 14, 2014 I'll bite... Try this: Un-Tested <form name="contactform" method="post" action="contacts.php"> <label for="first_name">First Name *</label> <input type="text" name="first_name" maxlength="50" size="30"> <label for="phone">Phone Number *</label> <input type="text" name="phone" maxlength="80" size="30"> <input type="submit" value="Submit"> </form> Again- Un-Tested <?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "supetraveller@gmail.com"; $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['phone'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = trim($_POST['first_name']); // required $phone_from = trim($_POST['phone']); // required $error_message = ""; $phone_exp = '/^[+]*[0-9]*[-(.]*[0-9]{1,3}[)-.]*[0-9]{3}[-.]*[0-9]{4}$/'; //I'm sure this could be cleaner if(!preg_match($phone_exp,$phone_from)) { $error_message .= 'The Phone Number 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 />'; } $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 .= "Email: ".clean_string($email_from)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); if(!mail($email_to, $email_subject, $email_message, $headers)) { trigger_error('The mail function failed to send the message!'); } ?> <!-- include your own success html here --> Thank you for contacting us. We will be in touch with you very soon. <?php } ?> Quote Link to comment Share on other sites More sharing options...
shavedhead Posted September 14, 2014 Author Share Posted September 14, 2014 (edited) ginerjm, the hungup is - what I did to change email to phone dont work. jcbones, sorry but it doesnt work. I dont even see the line "Thank you for contacting us ...." after submit. Sorry for a mess in code, I tryed to organize for now: <?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "mail@gmail.com"; $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['email'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // 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 />'; } $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 .= "Email: ".clean_string($email_from)."\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 } ?> Edited September 14, 2014 by shavedhead Quote Link to comment Share on other sites More sharing options...
jazzman1 Posted September 14, 2014 Share Posted September 14, 2014 I amended a little jcbones's script. <?php ini_set('display_errors',1); error_reporting(-1); if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "mail@gmail.com"; $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']) || $_POST['first_name'] == '') || (!isset($_POST['email']) || $_POST['email'] == '')) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // required $error_message = ""; $email_exp = '~^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([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 />'; } $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 .= "Email: ".clean_string($email_from)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); if(!$error_message){ if(mail($email_to, $email_subject, $email_message, $headers)) { echo "Thank you for contacting us. We will be in touch with you very soon."; } else { echo "ERROR: Message failed."; } } else { echo $error_message; exit; } } Quote Link to comment Share on other sites More sharing options...
ginerjm Posted September 14, 2014 Share Posted September 14, 2014 Alright shavedhead - I took your last post and cleaned it up and made a correction. This ran just fine on my system. <?php session_start(); error_reporting(E_ALL | E_NOTICE); ini_set('display_errors', '1'); // $_POST = array(); $_POST['email'] = 'dummy@domain.com'; $_POST['first_name'] = 'Firstname'; if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED // validation expected data exists // MISSING ! ON EMAIL TEST HERE. if(!isset($_POST['first_name']) || !isset($_POST['email'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // 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 />'; } $email_message = "Form details below.\n\n"; $email_message .= "First Name: ".clean_string($first_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; //*************************** // Build mail message $email_to = "mail@gmail.com"; $email_subject = "Your email subject line"; $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); $mail_result = true;//mail($email_to, $email_subject, $email_message, $headers); echo 'Thank you for contacting us. We will be in touch with you very soon.'; if (!$mail_result) echo "Mail could not be sent to us"; } //***************************** //***** FUNCTIONS *********** //***************************** 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(); } function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } ?> Note - you left off the ! on the first test of the email value - I added. I faked the post values to avoid having to build a form to test this. Remove those. The clean involved indents in a logical way as well as placing the function OUT OF THE INLINE CODE since that is one of the reasons for writing functions - to move blocks of code out of the way when they will be used elsewhere or when they detract from the flow of the surrounding code. In your case I don't see them as necessary at all. Quote Link to comment Share on other sites More sharing options...
shavedhead Posted September 14, 2014 Author Share Posted September 14, 2014 Unfortunately both codes don’t work. May be I didn’t explained what I need clearly. I need just two fields "Name" and "Phone", and "Submit" button. jazzman1, seems like your code still has e-mail validation in second field and I got the message about that if I try to put figures inside. But even if its e-mail, if doesn’t go to mailbox even if I have a note that everything was successfully sent. ginerjm, sorry but it doesn’t work on my side :-( I can put figures in the second field (even if I still can see e-mail validation in the code) and it says that it was sent but I don’t get anything on e-mail (yes, I put my address in the code). The form I posted still works, but I don’t need an e-mail, I need a phone number to be sent. Folks, I really appreciate your trying to help me!!! Quote Link to comment Share on other sites More sharing options...
jazzman1 Posted September 14, 2014 Share Posted September 14, 2014 (edited) jazzman1, seems like your code still has e-mail validation in second field and I got the message about that if I try to put figures inside. But even if its e-mail, if doesn’t go to mailbox even if I have a note that everything was successfully sent. The email goes to my personal mail server box (inside my local server), so the script works fine. If you want to send an email to google, yahoo or whatever remote mail servers you want, you need to trust your outgoing ip address to your account to this remote mail server. Edited September 14, 2014 by jazzman1 Quote Link to comment Share on other sites More sharing options...
shavedhead Posted September 14, 2014 Author Share Posted September 14, 2014 Yes, I am trying to send it to gmail. I can receive messages from the PHP code I published, and I thought somebody could help me to edit this code just to change "email" field to "phone" properly. Quote Link to comment Share on other sites More sharing options...
ginerjm Posted September 14, 2014 Share Posted September 14, 2014 The point I was making was to clean up your code in preparation for you to make the change (that you have yet to show us) that will alter your input from email to phone. Show Us How You Are Changing It. The code I gave you should have absolutely no problem working. Just upload it and type in the url to execute it and you should see the thank you message (with no email being sent since I commented it out. So now there is no hangup. We're just waiting to see your proposed changes to handle a phone instead of an email. Quote Link to comment Share on other sites More sharing options...
shavedhead Posted September 14, 2014 Author Share Posted September 14, 2014 ginerjm, i am not php coder at all, sorry. Quote Link to comment Share on other sites More sharing options...
Solution jcbones Posted September 14, 2014 Solution Share Posted September 14, 2014 Alright, I'll bite again, even though what you are expecting isn't help, but for someone to do it for you. I left a couple of little items in there to try and see if you would attempt to fix it yourself. Since this is a small script, I'll give it to you for free. I changed some of the logic, and tested this one (all except for the mail function). contact.php <?php if($_SERVER['REQUEST_METHOD'] == 'POST') { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "supetraveller@gmail.com"; $email_subject = "Your email subject line"; $email_from = 'website@mysite.com'; 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(); } $first_name = trim($_POST['first_name']); // required $phone_from = trim($_POST['phone']); // required $error_message = ""; $phone_exp = '/^[+]*[0-9]*[-(.]*[0-9]{1,3}[)-.]*[0-9]{3}[-.]*[0-9]{4}$/'; if(empty($_POST['phone']) || !preg_match($phone_exp,$phone_from)) { $error_message .= 'The Phone Number you entered does not appear to be valid.<br />'; } $string_exp = "/^[A-Za-z .'-]+$/"; if(empty($_POST['first_name']) || !preg_match($string_exp,$first_name)) { $error_message .= 'The First Name you entered does not appear to be valid.<br />'; } $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 .= "Email: ".clean_string($phone_from)."\n"; if(!empty($error_message)) { died($error_message); } // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); if(!mail($email_to, $email_subject, $email_message, $headers)) { trigger_error('The mail function failed to send the message!'); } //echo $email_message; ?> <!-- include your own success html here --> Thank you for contacting us. We will be in touch with you very soon. <?php } ?> *Note* This isn't the best script, and your users will be angry with it if they give bad parameters. It would be best to hand them back a form with all the correct info filled out like they had it. Since it is only 2 fields, they may fill it out a second time, maybe not. Quote Link to comment Share on other sites More sharing options...
shavedhead Posted September 15, 2014 Author Share Posted September 15, 2014 jsbones, just awesome! It works!!! Thank you very much! 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.