Jump to content

How can I transforme contact form on PHP?


Go to solution Solved by jcbones,

Recommended Posts

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 by shavedhead

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??

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
}
?>

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 by shavedhead

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

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.

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!!!

 

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 by jazzman1

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.

  • Solution

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.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.