Sunteți pe pagina 1din 12

Making a contact form in Php.

Introduction:

For this you will need basic php knowledge, patience and a willingness to learn. You
will also need a text editor ( I am
using notepad for example ) and a means of testing out this script, a server on your
pc for example.

Part 1 - The form.

Well seeing as we are making a contact form I thought it best to start off with
making the form. This is only simple html
and I expect you all know this already. But for a contact form I am going to include:

- A name box
- A contact drop down list
- A subject box
- A email box
- A message box
- A submit button
- A reset button

So on with the code:

Code:
<div align="center">
<form action="" method="POST">
<b> Please enter your name:</b><br>
<input type="text" name="name" size = 30><br><br> <!-- the name box //-->
<b> Please choose a contact: </b><br>
<select name="contact">
<option value="1"> Person 1
<option value="2"> Person 2
<option value="3"> Person 3
</select><br><br>
<b> Please enter a subject:</b><br>
<input type="text" name="subject" size = 30><br><br><!-- the subject box
//-->
<b> Please enter your email address:</b><br>
<input type="text" name="email" size = 30><br><br><!-- the email box //-->
<b> Please enter your message: </b><br>
<textarea name="message" cols = 20 rows = 10>

</textarea><br><br>
<input type="submit" value="submit" name="submit_1"><br>
<input type="reset" value="reset">
</form>
</div>
Now that we have our form sorted we can move on to the really interesting stuff, the
php! Now you'll have to read and pay attention
to this to fully understand so pay attention!

Part 2 - Declaring the variables.

Now when the user presses submit on the form, the form values ( the nanme,
contact, subject, email and message ) are all
"POSTED" to the php script that is usually found in the form's action tag like below:

Code:
<form action="scripthere.php" method="POST">

As you can see in our example we don't have an action, but that's because I'm going
to show you a neat little trick using the
isset() function! But more of that later. So we want to declare the form values into
variables that we can use in our php script.

Code:
<?php

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];

?>

Great! Doesn't look like much and it sure doesn't do anything! Now we need to stop
and think, we are taking in input from people off
the internet. Things could go wrong! You could get people who forget to fill in certain
parts of the form, or people ( for what ever reason )
who feel the need to submit empty forms and spam your inbox! How can we stop
this? Well I'm going to show you the error control.

Part 3 - Error control.

So if the user has submitted a form and any of the fields are left blank that means
that the php variable we delcared before for that field
will be blank! so we need to check IF the variable equals "". We need to declare a
new variable first, and I'll tell you why a little later on!

Code:

<?php

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];

$error = "";

?>

Now that we have the new variable we can start with our if statements to check if
the variables are blank and if they are we add a message to the
variable "$error".

Code:

<?php

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";

if($name=="") $error.="*Please enter a name"."<br>";


if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

?>

So as you can see above if they leave a textbox blank then we add a sentence to a
variable called $error asking the user to fill it in again. The if
statements dont have the curl brackets "{ }" because the if statement is all on one
line. If the if statement went onto two lines I would need the curly
brackets. So we have our error control done! Hold up you may be thinking , we
haven't checked the $contact variable. Well read on and you will find out.

Part 4 - Sorting out those contacts ( with a security measure ).

Now if you look at the part of the form where the user selects a contact you will see
the following:

Code:

<select name="contact">
<option value="1"> Person 1
<option value="2"> Person 2
<option value="3"> Person 3
</select>
This means if the user chooses to contact person 1 then the variable $contact will
have the value "1", if they chose person 2 $contact will have a value of "2"
and if they decided to contact person 3...you guessed it $contact has the value of
"3". Now hold up one minute, this is the person they want to contact, the
numbers 1, 2 and 3 aren't email address' how can you email them?! Well that was
my security measure. If someone were to look at the source code of the site
and seen this:

Code:

<select name="contact">
<option value="topsecretemail@test.co.uk"> Contact me
</select>

They would have your email address and then that would render the contact form
pointless! So we are going to use a lovely little thing called a switch (case). This
is the code:

Code:

<?php

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";

if($name=="") $error.="*Please enter a name"."<br>";


if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;
case 2:
$contact = "person2@testmail.com";
break;
case 3:
$contact = "person3@testmail.com";
break;
default:
$contact = "person1@testmail.com";
break;
}

?>
Now there's a lot to explain so listen up! Basically the switch (case) is like a group of
if statements. You start off by declaring the switch statement with
suprisingly:

Code:
switch

You then delcare the variable you want to check , in our case $contact.

Code:
switch ($contact)

Then you add your cases, as you can see in our example, we have case 1, 2, 3 and
default.

Code:

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;

What has happened above is as follows. The switch case checks the value of
$contact, if it equals "1" it runs the code in "case 1" so in our example
it changes the value of $contact to person1@testmail.com, then I use a break
statement to break out of the switch statement, otherwise it would
run through all of the cases! Then at the end I added a default case, this is used
incase the value of $contact doesn't equal either 1, 2 or 3.

Now we have sorted out all our variables , and checked them.

Part 5 - To send the email or not to send the email , that is the question.

Now this is a contact form we only want to send the email IF the whole form has
been filled
in correctly. If it hasn't we want to send the user a error message and tell them to
try again. Now look at our code, if the form has been filled in correctly
then the variable $error will still equal nothing :
Code:
$error = "";

HOWEVER if the user has left a field blank then the $error message will contain a
sentence, for example:

Code:
$error = "*Please enter a name"."<br>";
So we will only send the email IF $error = "", lets update our code:

Code:

<?php

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";

if($name=="") $error.="*Please enter a name"."<br>";


if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;
case 2:
$contact = "person2@testmail.com";
break;
case 3:
$contact = "person3@testmail.com";
break;
default:
$contact = "person1@testmail.com";
break;
}

if($error==""){
//code here to send the email
}
else{
echo "<div align='center'>". $error ."</div>";
}
?>

There we go now if the user doesn't fill the form in properly, the email isn't sent, and
they are told where they made a mistake! Beautiful!

Part 6 - Bringing it together a little bit.

Remember in part 2 when I told you I was going to teach you about the cool little
function "isset()". Well my friends this is the time! As well
as that we will also be involving our html form into our php! So let's begin.
The user fills the form in and presses the submit button, the variables are then all
"posted" to the php script. We can make a variable
for the submit button! Now if we have a variable for the submit button we can tell if
the user has pressed the submit button or not! If they have
pressed it then the variable will be there! If they haven't pressed it then it wont! So
let's add the isset() function to our code:

Code:

<?php

if(isset($_POST['submit_1'])) {
[/color]
$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";

if($name=="") $error.="*Please enter a name"."<br>";


if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;
case 2:
$contact = "person2@testmail.com";
break;
case 3:
$contact = "person3@testmail.com";
break;
default:
$contact = "person1@testmail.com";
break;
}

if($error==""){
//code here to send the email
}
else{
echo "<div align='center'>". $error ."</div>";
}

}
else {
?>

<div align="center">
<form action="" method="POST">
<b> Please enter your name:</b><br>
<input type="text" name="name" size = 30><br><br> <!-- the name box //-->
<b> Please choose a contact: </b><br>
<select name="contact">
<option value="1"> Person 1
<option value="2"> Person 2
<option value="3"> Person 3
</select><br><br>
<b> Please enter a subject:</b><br>
<input type="text" name="subject" size = 30><br><br><!-- the subject box
//-->
<b> Please enter your email address:</b><br>
<input type="text" name="email" size = 30><br><br><!-- the email box //-->
<b> Please enter your message: </b><br>
<textarea name="message" cols = 20 rows = 10>

</textarea><br><br>
<input type="submit" value="submit" name="submit_1"><br>
<input type="reset" value="reset">
</form>
</div>

<?php
}
?>

Now you maybe looking at that and thinking , what the . . . but don't be scared! It's
quite simple. We check to see if the user has
pressed submit:

Code:
if(isset($_POST['submit_1'])) {

if they have we move onto our php script, if they haven't we display the form!
Genius!

Part 7 - The code to send the email!

Now the code above may look a little tricky but don't worry, if you've read the
tutorial, then you should understand it as
I've broken it down piece by piece. Now we get onto the stuff that the contact form
was made for, sending the email! And for this
we are going to use the mail() function.

Firstly I'm going to describe the mail() function a little bit. We use our pre-defined
already checked variables as parameters in
the mail() function.

Here is how it is:

Code:
mail($contact, $subject, $message, $headers);

Now we need to add a new variable, $headers, this will include basic information
about who the email is from. Let's update our code:

Code:

<?php

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

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";
$headers = 'From:'.' '. $email;
if($name=="") $error.="*Please enter a name"."<br>";
if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;
case 2:
$contact = "person2@testmail.com";
break;
case 3:
$contact = "person3@testmail.com";
break;
default:
$contact = "person1@testmail.com";
break;
}

if($error==""){

mail($contact, $subject, $message, $headers);

}
else{
echo "<div align='center'>". $error ."</div>";
}

}
else {
?>
<div align="center">
<form action="" method="POST">
<b> Please enter your name:</b><br>
<input type="text" name="name" size = 30><br><br> <!-- the name box //-->
<b> Please choose a contact: </b><br>
<select name="contact">
<option value="1"> Person 1
<option value="2"> Person 2
<option value="3"> Person 3
</select><br><br>
<b> Please enter a subject:</b><br>
<input type="text" name="subject" size = 30><br><br><!-- the subject box
//-->
<b> Please enter your email address:</b><br>
<input type="text" name="email" size = 30><br><br><!-- the email box //-->
<b> Please enter your message: </b><br>
<textarea name="message" cols = 20 rows = 10>

</textarea><br><br>
<input type="submit" value="submit" name="submit_1"><br>
<input type="reset" value="reset">
</form>
</div>

<?php
}
?>

There we go! Our script now takes input from the user via a form, checks the data, if
the data is good then it sends the email. But how will
we know if the email was sent sucessfully or failed to send?

Part 8 - Success?

We can do this with a simple if statement around the mail function:

Code:

if(mail($contact, $subject, $message, $headers)){


echo " Email was sent ";
}
else {
echo " Email failed to send ";
}

There we go, let's add this to our script:


Code:

<?php

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

$name = $_POST['name'];
$contact = $_POST['contact'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$error = "";
$headers = 'From:'.' '. $email;
if($name=="") $error.="*Please enter a name"."<br>";
if($subject=="") $error.="*Please enter a subject"."<br>";
if($email=="") $error.="*Please enter a email"."<br>";
if($message=="") $error.="*Please enter a message"."<br>";

switch ($contact){
case 1:
$contact = "person1@testmail.com";
break;
case 2:
$contact = "person2@testmail.com";
break;
case 3:
$contact = "person3@testmail.com";
break;
default:
$contact = "person1@testmail.com";
break;
}

if($error==""){

if(mail($contact, $subject, $message, $headers)){


echo " Email was sent ";
}
else {
echo " Email failed to send ";
}

}
else{
echo "<div align='center'>". $error ."</div>";
}

}
else {
?>
<div align="center">
<form action="" method="POST">
<b> Please enter your name:</b><br>
<input type="text" name="name" size = 30><br><br> <!-- the name box //-->
<b> Please choose a contact: </b><br>
<select name="contact">
<option value="1"> Person 1
<option value="2"> Person 2
<option value="3"> Person 3
</select><br><br>
<b> Please enter a subject:</b><br>
<input type="text" name="subject" size = 30><br><br><!-- the subject box
//-->
<b> Please enter your email address:</b><br>
<input type="text" name="email" size = 30><br><br><!-- the email box //-->
<b> Please enter your message: </b><br>
<textarea name="message" cols = 20 rows = 10>

</textarea><br><br>
<input type="submit" value="submit" name="submit_1"><br>
<input type="reset" value="reset">
</form>
</div>

<?php
}
?>

Tutorial Overview.
Congratulations, you've just learnt how to make a contact form! I hope this tutorials
has been helpful and if you have any
questions about anything with in the tutorial, please feel free to ask me. I will start
my next tutorial sometime soon!
Thanks for reading,
- Chris.

Some tips.
Keep practicing php and don't just copy and paste the code, LEARN it

S-ar putea să vă placă și