...

View Full Version : Adding html output for Error Messages in contact form...



CruxCreations
03-26-2009, 02:14 AM
Is there anyway to show error messages in html like the successful message is doing? I dont like the white page for error messages.. thanks. :)


<?php
if(isset($_POST['email'])) {

// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "admin@whatever.net";
$email_subject = "Inquiry from Contact Form";


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['website']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}

$name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$website = $_POST['website']; // not required
$comments = $_POST['comments']; // required

$error_message = "";
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$name)) {
$error_message .= 'Your Name may not contain any numbers or symbols.<br />';
}
if(strlen($comments) < 5) {
$error_message .= 'The message must contain at least 5 letters.<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_from)."\n";
$email_message .= "Website: ".clean_string($website)."\n";
$email_message .= "Message: ".clean_string($comments)."\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 -->

<?php include("header.php"); ?>
<img src="images/contact.jpg" alt="" id="subhead" />
<div id="content">
<p class="thanks">Thank you for contacting us, we will respond to your e-mail within 24 hours!</p>
</div>

<?php include("footer.php"); ?>

<?
}
?>

steelaz
03-26-2009, 02:31 AM
Try replacing your died() function with:



function died($error) {
include("header.php");
// 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 />";
include("footer.php");
die();
}
?>

CruxCreations
03-26-2009, 02:35 AM
nah, that just closes the code off completely leaving me with a bunch of text at the top of the page

RomanTaylor
03-26-2009, 05:45 AM
Show us HTML. Does your form reference itself or another page? Were its located? include function might not work in the sub folder, you need to add ../ in front of the link.

If it reference another page, you need to include your CSS and HTML outside of the <?php ?> tags. (or inside using include function)



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum