hi, as the title suggests, im trying to add recaptcha to our existing contact form. Ive got it to display in the form but cant get the 2nd stage verify part to work, i.e. the form is sent whether I tick the box or not! Please see my current code below (emails/passwords etc. removed) & then below that the parts i think I need to add in (but nor sure how/where):
Current contact.php code:
<?php
ini_set('display_errors', 1);
$SENT = false;
if ($_POST && $_POST["name"] && preg_match("/^[a-zA-Z0-9 ]+$/i", $_POST["name"]) !== false && $_POST["email"] && preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $_POST["email"]) !== false) {
try {
include_once('class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com"; // place your smtp host here
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "
[email protected] "; // place your smtp username here
$mail->Password = "Password// place your smtp password here
$mail->Port = "465";
$mail->From = $_POST["email"];
$mail->FromName = $_POST["name"];
$mail->AddAddress("
[email protected] ");
$mail->Subject = "Enquiry from the Website";
// build the email
$s = "The following contact form has been submitted:\n\n";
$s .= "=== Customer Details =====\n";
$s .= "Name: " .$_POST["name"]. "\n";
$s .= "Company: " .$_POST["company"]. "\n";
$s .= "Telephone: " .$_POST["telephone"]. "\n";
$s .= "Email Address: " .$_POST["email"]. "\n\n";
$s .= "=== Enquiry Information =====\n";
$s .= trim($_POST["comments"])."\n\n";
$s.= "Generated: " .date("Y-m-d H:i:s");
$mail->Body = $s;
$mail->WordWrap = 72; // wrap text to 72 characters
// echo "Attempting to send e-mail...";
if ($mail->Send()) {
$SENT = true;
// echo "Success!";
} else {
$SENT = false;
// echo "Failed!";
}
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->errorMessage();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="revisit-after" content="7 days">
<meta name="Copyright" content="">
<meta name="Robots" content="all">
<meta name="language" content="en">
<meta name="distribution" content="Global">
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
<style type="text/css" media="screen">
<!--
@import url(css/styles.css);
-->
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=en"></script>
<script src="js/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="js/global.js" type="text/javascript"></script>
<script src="js/jquery.goomaps.js" type="text/javascript"></script>
</head>
<body>
<div id="container_header">
<div id="header">
<div id="logo"><h1><a href="/" title="Home"><span></span></a></h1></div>
</ul>
</li>
<li><a href="contact.php" class="active">Contact Us</a></li>
</ul>
</div>
</div>
</div>
<div id="container_body">
<div id="body">
<div class="clearboth"> </div>
<div id="home_panel">
<div id="home_bottompanel_content">
<h2>Contact Us</h2>
<div class="goomapsWrapper">
<h3> Office</h3>
<p>
>
<br />
<span>T:</span> +44 0<br />
<span>F:</span> +44 <br />
<span>DX:</span> <br />
<span>E:</span> <a href="mailto:
[email protected]">
[email protected]</a>
</p>
<div id="map_canvas" class="map_canvas"></div>
</div>
<div class="goomapsWrapper">
<h3> Office</h3>
<p>
<br />
<span>T:</span> +44 <br />
<span>F:</span> +44 <br />
<span>DX:</span> <br />
<span>E:</span> <a href="mailto:
[email protected]">
[email protected]</a>
</p>
<div id="map_canvas2" class="map_canvas"></div>
</div>
<div>
<?php if (!$SENT) { ?>
<?php if (!$SENT && $_POST) {
echo '<p class="red">There was a problem with sending the form.<br />Please check to ensure you have filled in all the fields.</p>';
} ?>
<p><b>Enquiry Form</b><br />
<span class="red">**</span> Indicates required fields</p>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<form name="contact" action="contact.php" method="post">
<fieldset class="conform">
<legend>Your Details</legend><br />
<label for="name">Name</label>
<input id="name" type="text" size="40" value="<?php echo (isset($_POST["name"])) ? $_POST["name"] : '' ; ?>" name="name" /> <span class="red">**</span><br />
<label for="company">Company</label>
<input id="company" type="text" size="40" value="<?php echo (isset($_POST["company"])) ? $_POST["company"] : '' ; ?>" name="company" /><br />
<label for="telephone">Telephone</label>
<input id="telephone" type="text" size="40" value="<?php echo (isset($_POST["telephone"])) ? $_POST["telephone"] : ''; ?>" name="telephone" /><br />
<label for="email">Email Address</label>
<input id="email" type="text" size="40" value="<?php echo (isset($_POST["email"])) ? $_POST["email"] : ''; ?>" name="email" /> <span class="red">**</span><br />
</fieldset>
<fieldset class="conform2">
<legend>Further Information</legend><br />
<textarea id="comments" name="comments" size="40" rows="8" cols="50"><?php echo(isset($_POST["comments"])) ? $_POST["comments"] : '' ; ?></textarea>
</fieldset>
<html>
<div class="g-recaptcha" data-sitekey="My Site Key"></div><br>
<br />
<a href="javascript:document.contact.submit();"><img title="" height="43" alt="" src="images/submit.gif" width="102" border="0" /></a>
</form>
</div>
<?php
} else {
?>
<p>Thank you for your enquiry. We will reply as soon as possible.</p>
<?php
}
?>
</p>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('#map_canvas').goomaps("init", {
center: [51.467434,0.008308],
zoom: 16,
clickable: true,
draggable: true,
scrollwheel: false,
OverviewMapControlOptions: false,
}).goomaps("addmarkers", [{ options: {
position: [51.467434,0.008308]
}}]);
$('#map_canvas2').goomaps("init", {
center: [51.462998,-0.010772],
zoom: 16,
clickable: true,
draggable: true,
scrollwheel: false,
OverviewMapControlOptions: false,
}).goomaps("addmarkers", [{ options: {
position: [51.462998,-0.010772]
}}]);
});
</script>
</body>
</html>
This is the code I think I need to include somewhere:
<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])){
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){
//your site secret key
$secret = 'My Secret Key';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success){
//contact form submission code goes here
$succMsg = 'Your contact request have submitted successfully.'; }else{ $errMsg = 'Robot verification failed, please try again.'; } }else{ $errMsg = 'Please click on the reCAPTCHA box.'; } } ?>