I am using the code below for my contact form. I would like to redirect the user to a page (thanks.html) after the form is submitted. Does anybody know what the proper code to create this redirect (after successful submission) would be and where I would insert that code?
<?php
//If the form is submitted
if(isset($_POST['submitted'])) {
//Check to see if the honeypot captcha field was filled in
if(trim($_POST['checking']) !== '') {
$captchaError = true;
} else {
//Check to make sure that the name field is not empty
if(trim($_POST['contactName']) === 'Name') {
$nameError = 'Your name is required';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}
//Check to make sure sure that a valid email address is submitted
if(trim($_POST['email']) === 'Email') {
$emailError = 'Your email is required';
$hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$emailError = 'You entered an invalid email address.';
$hasError = true;
} else {
$email = trim($_POST['email']);
}
//Check to make sure comments were entered
if(trim($_POST['comments']) === 'Enter your message') {
$commentError = 'You must enter a message';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}
//If there is no error, send the email
if(!isset($hasError)) {
$emailTo = get_option('to_email');
$subject = 'Contact Form Submission from '.$name;
$sendCopy = trim($_POST['sendCopy']);
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments \n\nIP: ".$_SERVER['REMOTE_ADDR'];
$headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;
mail($emailTo, $subject, $body, $headers);
if($sendCopy == true) {
$subject = 'You emailed Your Name';
$headers = 'From: Your Name <[email protected]>';
mail($email, $subject, $body, $headers);
$ip = $_SERVER['REMOTE_ADDR'];
}
$emailSent = true;
} }
} ?>
<li>
<?php if(isset($hasError) || isset($captchaError)) { ?>
<span class="error">Message did not send. Please correct the error(s) below.</span>
<?php } ?>
</li>
<form action="<?php the_permalink(); ?>" id="contactForm" method="post">
<li>
<input type="text" name="contactName" id="contactName" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Name';" value="Name" class="requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</li>
<li>
<input type="text" name="email" id="email" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Email';" value="Email" class="requiredField" />
<?php if($emailError != '') { ?>
<span class="error"><?=$emailError;?></span>
<?php } ?>
</li>
<li class="textarea">
<textarea name="comments" id="commentsText" rows="1" cols="100" class="requiredField" onfocus="if(this.value==this.defaultValue)this.value=''" onblur="if(this.value=='')this.value=this.defaultValue">
<?php
if(isset($_POST['comments'])) {
if(function_exists('stripslashes')) {
echo stripslashes($_POST['comments']);
}
else { echo $_POST['comments'];
} }
else { echo 'Enter your message';
} ?>
</textarea>
<?php if($commentError != '') { ?>
<span class="error"><?=$commentError;?></span>
<?php } ?>
</li>
<li class="sendcopy">
<input type="checkbox" name="sendCopy" id="sendCopy" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> />
<label for="sendCopy">Send a copy of this email to yourself</label>
</li>
<li class="screenReader">
<label for="checking" class="screenReader">If you want to submit this form, do not enter anything in this field</label><input type="text" name="checking" id="checking" class="screenReader" value="<?php if(isset($_POST['checking'])) echo $_POST['checking'];?>" /></li>
<li class="button"><input type="hidden" name="submitted" id="submitted" value="true" /><button type="submit">Send</button></li>
</form>
Arnav Joy answers:
After this line $emailSent = true;
Add following
header('location:http://www.yoursite.com/thanks.html');
siouxfan45 comments:
I received this error:
WARNING: CANNOT MODIFY HEADER INFORMATION - HEADERS ALREADY SENT BY (OUTPUT STARTED AT /HOME/JBSIMONS/PUBLIC_HTML/WP-CONTENT/PLUGINS/ALL-IN-ONE-SEO-PACK/AIOSEOP_CLASS.PHP:1128) IN /HOME/JBSIMONS/PUBLIC_HTML/WP-CONTENT/THEMES/MAG/SIDEBAR.PHP ON LINE 107
Arnav Joy comments:
try this
<?php
//If the form is submitted
if(isset($_POST['submitted'])) {
//Check to see if the honeypot captcha field was filled in
if(trim($_POST['checking']) !== '') {
$captchaError = true;
} else {
//Check to make sure that the name field is not empty
if(trim($_POST['contactName']) === 'Name') {
$nameError = 'Your name is required';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}
//Check to make sure sure that a valid email address is submitted
if(trim($_POST['email']) === 'Email') {
$emailError = 'Your email is required';
$hasError = true;
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$emailError = 'You entered an invalid email address.';
$hasError = true;
} else {
$email = trim($_POST['email']);
}
//Check to make sure comments were entered
if(trim($_POST['comments']) === 'Enter your message') {
$commentError = 'You must enter a message';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}
//If there is no error, send the email
if(!isset($hasError)) {
$emailTo = get_option('to_email');
$subject = 'Contact Form Submission from '.$name;
$sendCopy = trim($_POST['sendCopy']);
$body = "Name: $name \n\nEmail: $email \n\nComments: $comments \n\nIP: ".$_SERVER['REMOTE_ADDR'];
$headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;
mail($emailTo, $subject, $body, $headers);
if($sendCopy == true) {
$subject = 'You emailed Your Name';
$headers = 'From: Your Name <[email protected]>';
mail($email, $subject, $body, $headers);
$ip = $_SERVER['REMOTE_ADDR'];
}
$emailSent = true;
?>
<script>
location.href="http://www.yoursite.com/thanks.html";
</script>
<?php
} }
} ?>
<li>
<?php if(isset($hasError) || isset($captchaError)) { ?>
<span class="error">Message did not send. Please correct the error(s) below.</span>
<?php } ?>
</li>
<form action="<?php the_permalink(); ?>" id="contactForm" method="post">
<li>
<input type="text" name="contactName" id="contactName" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Name';" value="Name" class="requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</li>
<li>
<input type="text" name="email" id="email" onfocus="clearDefault(this)" onblur="if(this.value=='')this.value='Email';" value="Email" class="requiredField" />
<?php if($emailError != '') { ?>
<span class="error"><?=$emailError;?></span>
<?php } ?>
</li>
<li class="textarea">
<textarea name="comments" id="commentsText" rows="1" cols="100" class="requiredField" onfocus="if(this.value==this.defaultValue)this.value=''" onblur="if(this.value=='')this.value=this.defaultValue">
<?php
if(isset($_POST['comments'])) {
if(function_exists('stripslashes')) {
echo stripslashes($_POST['comments']);
}
else { echo $_POST['comments'];
} }
else { echo 'Enter your message';
} ?>
</textarea>
<?php if($commentError != '') { ?>
<span class="error"><?=$commentError;?></span>
<?php } ?>
</li>
<li class="sendcopy">
<input type="checkbox" name="sendCopy" id="sendCopy" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> />
<label for="sendCopy">Send a copy of this email to yourself</label>
</li>
<li class="screenReader">
<label for="checking" class="screenReader">If you want to submit this form, do not enter anything in this field</label><input type="text" name="checking" id="checking" class="screenReader" value="<?php if(isset($_POST['checking'])) echo $_POST['checking'];?>" /></li>
<li class="button"><input type="hidden" name="submitted" id="submitted" value="true" /><button type="submit">Send</button></li>
</form>
Linda answers:
Hi, another option might be to put this after $emailSent = true;
wp_redirect( 'my-target-page-here', 301 );
exit;
Francisco Javier Carazo Gil answers:
If you have problem with "header already sent" using Arnav and Linda options, use:
echo "<script>document.location.href='<?php echo home_url() ?>/my-target-page-here'</script>
siouxfan45 comments:
Where would I put this?
Francisco Javier Carazo Gil comments:
In the same place you would put header() o wp_redirect(), you have to delete it and put the echo I told you.
siouxfan45 comments:
When you say "you have to delete it" what is the it you are referring to?
Francisco Javier Carazo Gil comments:
Where have you wrote wp_redirect? You have to replace it by my code.
Remy answers:
If you want to be event safer, you can use wp_safe_redirect() instead of wp_redirect()
phppoet answers:
add this code after line 117
$message='<script>setTimeout(function () {
window.location.href = "http://yourdomain.com/thanks.html"; //will redirect to your blog page (an ex: blog.html)
}, 5000);
</script>';
echo $message;
where replace "5000(5 seconds )" with your desired waiting time before redirect and "http://yourdomain.com/thanks.html" with your exact thanks page address.
full code will be like this
http://pastebin.com/S8Z7b5rG
hope it works for you .