Hello,
I have a php "contact.php" form. The code incorporates ReCaptcha php code for a bit of extra security.
If the submit button is pressed without entering the captcha code the form redirects to a blank page and a message is displayed - "The reCAPTCHA
wasn't entered correctly. Go back and try it again.(reCAPTCHA said:
incorrect-captcha-sol)".
I would much prefer the message to appear on my contact.php form directly below the submit button after it is pressed, instead of on a seperate blank page..
Can this be achieved?
PHP Code:
<?php
$errors = null;
if (isset($_POST['submit']))
{
$name = $_POST['name'];
$emailSubject = $_POST['emailSubject'];
$email = $_POST['email'];
$message = $_POST['message'];
/*Check required fields have been filled out*/
$mandate=array($name, $email); // Mandatory fields
if(empty($name))
$errors['name']="Please Enter Your Name!";
if (empty($email))
$errors['email']= 'Please Enter Your Email Address!';
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/", $email))
$errors['email']='Please check your email address!';
/*End of Check required fields have been filled out*/
/*Re-captcha code starts here - linked to recaptchalib.php*/
require_once('recaptchalib.php');
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
}
/*Re-captcha code ends here*/
/*Email Address Validator Start here - linked to EmailAddressValidator.php*/
include('EmailAddressValidator.php');
$validator = new EmailAddressValidator;
if ($validator->check_email_address($email))
/*Email Address Validator End here*/
// code to send email
if(count($errors)==0){
$to = 'me@me.com';
$subject = 'Email query from xxxx';
$message = "Email sent from: $email \n $name has sent you a message:- \n $message";
$headers = 'From: me@me.com'. "\r\n" .
'Reply-To: queries@me.com'. "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers) or exit('mail FAIL');
echo '<p>Thank you for emailing me! Your Message has been sent.</p>';
}
else
{
echo '<p>Please re-check your form entries.</P>';
}
}
?>
<?php
if(!isset($_POST['submit']) || count($errors)){
?>
<form id="tomsform" method="POST" action="<?php echo JRoute::_( 'index.php' );?>">
<p>First Name</p>
<input type="text" name="name" size="19" value="<?php echo (isset($name)) ? $name : '';?>" class="textbox">
<?php
if(isset($errors['name'])) echo $errors['name'];
?>
<br>
<p>Email Subject</p>
<input type="text" name="emailSubject" size="19" value="<?php echo (isset($emailSubject)) ? $emailSubject : '';?>" class="textbox">
<?php
if(isset($errors['emailSubject'])) echo $errors['emailSubject'];
?>
<br>
<p>Email Address</p>
<input type="text" name="email" size="19" value="<?php echo (isset($email)) ? $email : '';?>" class="textbox">
<?php
if(isset($errors['email'])) echo $errors['email'];
?>
<br>
<p>Message</p>
<textarea rows="9" name="message" cols="30" class="textbox"><?php echo (isset($message)) ? $message: '';?></textarea>
<br>
<br>
<div id="x">
<?php
require_once('recaptchalib.php');
$publickey = "xxxxxxxxxxxxxxxxxxxxxxxxx"; // you got this from the signup page
echo recaptcha_get_html($publickey);
if(isset($errors['captcha'])) echo $errors['captcha'];
?>
</div>
<input type="submit" value="Submit" name="submit" class="go">
</form>
<?php
}
?>
Many thanks