Jump to content
xisto Community

A Full Error Protected Php Contact Form

Recommended Posts

Well hello there yound lads. This is my first tutorial ever. If you would like to see the finished product for yourself please go to http://forums.xisto.com/no_longer_exists/



Anyways here we go!


Step 1. Make a file called index.php. This is where the form is going to be. Copy and paste this code in:

<?php session_start(); ?><!--Start error code--><?phpif ($_SESSION['error_msg']) {foreach ($_SESSION['error_msg'] as $val) {echo "$val<br />";}unset($_SESSION['error_msg']);}?><!--End Error Code--><!--Start Form Code-->				<form method="POST" action="contact.php">								<p><label for="Name">Name</label><br /><input id="Name" name="Name" type="text" tabindex="1" size="30" /></p>				<p><label for="EmailFrom">Email</label><br /><input id="EmailFrom" name="EmailFrom" type="text" tabindex="2" size="30" /></p>				<p><label for="Subject">Subject</label><br /><input id="Subject" name="Subject" type="text" tabindex="3" size="30" /></p>							<p><label for="words">Message</label><br /><textarea name="Message" tabindex="5" rows="10" cols="24" style="width:300px;"></textarea></p>				<input type="submit" name="post" id="post" value=" Send " />  <input type="reset" value=" Reset " /></form><!--End Form Code-->

The first part tells the document to start the session. MAKE SURE YOU PUT THIS IN THE VERY BEGGINING BEFORE ANYTHING ELSE!!!


Now let me try and explain. Then the second part of the code, the error checking part, checks if there is an error, such as someone not entering their name or an email which is not valid. For example. If someone decided to be a stupid and enter this for an email "alkjdldaslkjas", it will display "Please enter in a valid email". Anyways, if you try it out you will see what I am talking about.


Now the second part of the code is just the form, which is self explanitory.





Step 2. Ok now make a file called contact.php. This is the part of the script that will process the form. Here is the code:

<?phpsession_start();//Email Validationfunction checkEmail($email) {   if(eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email))    {	  return FALSE;   }   list($Username, $Domain) = split("@",$email);   if(@getmxrr($Domain, $MXHost))    {	  return TRUE;   }   else    {	  if(@fsockopen($Domain, 25, $errno, $errstr, 30)) 	  {		 return TRUE; 	  }	  else 	  {		 return FALSE; 	  }   }}// get posted data into local variables$EmailTo = "youremail@domain.com"; $EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); $Name = Trim(stripslashes($_POST['Name'])); $Subject = Trim(stripslashes($_POST['Subject'])); $Message = Trim(stripslashes($_POST['Message'])); // validation$validationOK=true;if(checkEmail($EmailFrom) == FALSE){$error_msg[] = "Please enter in a valid email address.";}if (Trim($Name)==""){$error_msg[] = "Please enter in a name.";}if (Trim($Subject)=="") {$error_msg[] = "Please enter in a subject.";}if (Trim($Message)==""){$error_msg[] = "Please enter in a message.";}//triggers error messageif ($error_msg) {$_SESSION['error_msg'] = $error_msg;header ('Location: index.php');exit();}//sends emailelse {$Body = "You have a new email from $Name.\n\n Reply to $EmailFrom.\n\n $Name says,\n $Message";$success = mail($EmailTo, $Subject, $Body);}//redirect to success pageif ($success){  print "<meta http-equiv=\"refresh\" content=\"0;URL=contact_done.php\">";}else{  print "Email could not be sent due to errors. Please email the <a href='mailto:youremail@domain.com>webmaster</a>.";}?>



Ok so this is the part where the script check to see if the form is filled out nice and neatly, with a proper email and all that good stuff. It then emails you what the person wrote and voila! It works!!! It also relocates to a page called contact_done.php.


You can make the contact_done.php file if you want to. That file just tells the viewer that their submission has been sent correctly and that all is dandy. If you do not want to make it, just remove this part of the code:

print "<meta http-equiv=\"refresh\" content=\"0;URL=contact_done.php\">";



Thank you very much for checking out my tutorial and good luck with future coding :)


Download the script -


Notice from Johnny:

Share this post

Link to post
Share on other sites

Wow!! Nice tutorial, thank you very much. As I see you are very good at this (coding, scripting, php etc...) on the contrary I barely now how to code. How di you showed the number of download on your post? It's really cool. Keep up the good work!

Share this post

Link to post
Share on other sites

Very nice tutorial. Usually when I get a php contact form I mess it up some how but this is the full and real thing. Thanks for posting it. Good job.

Share this post

Link to post
Share on other sites

I often thought about implementing something like this, but I always put it on the bottom of my list :( But thanks to your tutorial, I will implement it right now. thanks in advance :)

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | 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.