|
|
|
|
Thread title: Adding html output for Error Messages in contact form... |
|
|
|
|
|
Thread tools
Search this thread
Display Modes
|
|
03-26-2009, 02:38 AM
|
#1
|
Status: I'm new around here
Join date: Mar 2009
Location: Arizona
Expertise:
Software:
Posts: 2
|
Adding html output for Error Messages in contact form...
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 Code:
<?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"); ?>
<? } ?>
|
|
03-26-2009, 10:16 AM
|
#2
|
Status: Member
Join date: Aug 2008
Location: Hampshire, UK
Expertise:
Software:
Posts: 202
|
This will output the error message the same as the success message, just change the error message in the function.
PHP Code:
<?php include("header.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 />";
}
// 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);
} else{
echo "<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>";
}
$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("footer.php");
}
?>
|
|
03-26-2009, 10:18 AM
|
#3
|
Status: I'm new around here
Join date: Mar 2009
Location:
Expertise:
Software:
Posts: 2
|
If a client wants fancy validation i mostly use http://www.livevalidation.com/
Of course all user input is tainted so you still need to filter all input to make your application secure. It is best you use whitelist method for total control. You can check if input is alphanumeric with ctype_alnum(); you can also use regular expressions to filter everything out of a string so you only are left with alphanumeric data.
Example
PHP Code:
<?php
if(!ctype_alnum($_POST['name'])) {
$name = preg_replace('/[^A-Za-z0-9 ]/', '',$_POST['name']);
} else {
echo "WIN";
}
?>
Hope this was what you were looking for.
|
|
03-26-2009, 03:22 PM
|
#4
|
Status: I'm new around here
Join date: Mar 2009
Location: Arizona
Expertise:
Software:
Posts: 2
|
|
|
|
|
|
|
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
|
|