Я пытаюсь добавить recaptcha в контактную форму в первый раз, и я добился определенного прогресса, но теперь я немного застрял.
Это не позволяет мне отправлять электронные письма, и я не могу понять, почему. Раньше у меня была проблема, что recaptcha не останавливал ложные ответы, но после того, как я поместил код recaptcha поверх формы, теперь он показывает себя и защищает форму.
Вот код, который делает:
<?php
require_once('recaptchalib.php');
$privatekey = "xxxxxxxxxxxxxxxxxxxxxx";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
if(@mail($your_email,$email_subject,$email_content)) {
echo 'Message sent!'; }
}
if(!$_POST) exit;
$email = $_POST['email'];
//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("@",$email )){
$error.="Invalid email address entered";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ('name','email','telephone','message');
$required = array('name','email','telephone','message');
$your_email = "email@mydomain.com";
$email_subject = "New Message from XXX: ".$_POST['subject'];
$email_content = "New message:\n";
foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != 'subject' && $key != 'telephone') {
if( empty($_POST[$value]) ) {
echo 'PLEASE FILL IN REQUIRED FIELDS'; exit;
}
}
$email_content .= $value.': '.$_POST[$value]."\n";
}
}
if(@mail($your_email,$email_subject,$email_content)) {
echo 'Message sent!';
}
else {
echo 'ERROR!';
}
}
?>
А вот код из формы:
<form action="./contact.php" method="post" id="contactform">
<?php
require_once('./recaptchalib.php');
$publickey = "xxxxxxxxxxxxxxxxxx"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<ol>
<li>
<label for="name">Name</label>
<input id="name" name="name" class="text" />
</li>
<li>
<label for="email">Email</label>
<input id="email" name="email" class="text" />
</li>
<li>
<label for="telephone">Telephone</label>
<input id="telephone" name="telephone" class="text" />
</li>
<li>
<label for="message">Message</label>
<textarea id="message" name="message" rows="6" cols="50"></textarea>
</li>
<li class="buttons">
<input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
<div class="clr"></div>
</li>
</ol>
</form>
Спасибо за вашу помощь!