Link to home
Start Free TrialLog in
Avatar of leblanc
leblanc

asked on

contact form ending

The code below is for a contact form. It validates name, email, and messages. However when it is successfully submitted, the form disappears and a thank you message is displayed. I am not a PHP programmer. So I need some help in keeping the form on the page in addition to the thank you message. Thank you very much in advance.

From a high level:
...
<?php if($form_complete === FALSE): ?>
...
 <?php else: ?><p>Thank you for your Message!</p><?php endif; ?>

<?php

// Set email variables
$email_to = 'youremail@address.com';
$email_subject = 'Form submission';

// Set required fields
$required_fields = array('fullname','email','comment');

// set error messages
$error_messages = array(
	'fullname' => 'Please enter a Name to proceed.',
	'email' => 'Please enter a valid Email Address to continue.',
	'comment' => 'Please enter your Message to continue.'
);

// Set form status
$form_complete = FALSE;

// configure validation array
$validation = array();

// check form submittal
if(!empty($_POST)) {
	// Sanitise POST array
	foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
	
	// Loop into required fields and make sure they match our needs
	foreach($required_fields as $field) {		
		// the field has been submitted?
		if(!array_key_exists($field, $_POST)) array_push($validation, $field);
		
		// check there is information in the field?
		if($_POST[$field] == '') array_push($validation, $field);
		
		// validate the email address supplied
		if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
	}
	
	// basic validation result
	if(count($validation) == 0) {
		// Prepare our content string
		$email_content = 'New Website Comment: ' . "\n\n";
		
		// simple email content
		foreach($_POST as $key => $value) {
			if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
		}
		
		// if validation passed ok then send the email
		mail($email_to, $email_subject, $email_content);
		
		// Update form switch
		$form_complete = TRUE;
	}
}

function validate_email_address($email = FALSE) {
	return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}

function remove_email_injection($field = FALSE) {
   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

	<title>welcome</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	
	<link href="contact/css/contactform.css" rel="stylesheet" type="text/css" />
	
	<script type="text/javascript">
		var nameError = '<?php echo $error_messages['fullname']; ?>';
		var emailError = '<?php echo $error_messages['email']; ?>';
		var commentError = '<?php echo $error_messages['comment']; ?>';
	</script>

</head>

<body>

<div id="formWrap">
	<div id="form">
    <?php if($form_complete === FALSE): ?>
    <form action="contact.php" method="post" id="comments_form">
    	<div id="row">
        	<div class="label"> ur name</div>
            <div class="input">
            	<input type="text" id="fullname" class="detail" name="fullname" value="" />
</div>
             <div class="context">e.g. john smith</div>
        </div>
        
        <div id="row">
        	<div class="label"> ur email</div>
            <div class="input">
            	<input type="text" id="email" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" />
                <?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>
</div>
             <div class="context">email not share</div>
        </div>
        
         <div id="row">
        	<div class="label"> ur msg</div>
            <div class="input">
            	<textarea id="comment" class="mess" name="comment"/><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?>
                </div>
             
        </div>
        
        <div class="submit"><input type="submit" id="submit" name="submit" value="send msg" /></div>
        </form>
        <?php else: ?>
<p>Thank you for your Message!</p>
<?php endif; ?>

</div>
</div>

</body>
</html>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Dan Craciun
Dan Craciun
Flag of Romania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of leblanc
leblanc

ASKER

Awesome... How do you reset the form... Thank you very much
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of leblanc

ASKER

Ray,

Thanks for the info. I got my codes from this tutorial, https://www.youtube.com/watch?v=fBfXQqDcNSk&index=22&list=PLUWoaEuQPDX5h2rbVEP4-ErVIdbNQgl_H.
I am not a PHP kind of programmer. But from the tutorial, the form seems to be straight forward. So you are saying that using regular expression for form validation in PHP is not a best practice.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial