Güvenlik kodu ihtiyacınız var - yanlış captcha-sol elde tutmak

5 Cevap php

Ben siteme bir reCAPTCHA'yı eklemek, ama ben cevabı gönderdiğinizde incorrect-captcha-sol hata elde tutmak için çalışıyorum.

Ben aşağıdakileri yaparak doğru ediyorsam herkes bana söyleyebilir?

Ben contact.php içeren genel bir index.php var. Contact.php Ben aşağıdaki kodu ekledikten:

require_once('recaptchalib.php');
$publickey = "XXXX";
$privatekey = "XXXX";

//the response from reCAPTCHA
$resp = null;
//the error code from reCAPTCHA, if any
$error = null;

if ($_POST['submit']) {
    $message = $_POST['message_txt'];
    $name = $_POST['name_txt'];
    $email = $_POST['email_txt'];

$emailBody = $message;
$to = 'xx';
$from = $name.' <'.$email.'>';
$subject = 'XX Website Enquiry';
$headers = 'From: '.$from;	

$resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
	echo 'captcha correct';
	if (mail($to,$subject,$emailBody,$headers)) {
		//echo 'mail sent';
		$confirmation = 'sent';
	}
	else {
		//echo 'mail not sent';
		$confirmation = 'error';
	}
} else {
	# set the error code so that we can display it. You could also use
	# die ("reCAPTCHA failed"), but using the error message is
	# more user friendly

	$error = $resp->error;

	echo $error;
}

}

Benim html böyle CAPTCHA eklenir:

<form name="contactForm" method="post" action="index.php?id=contact&action=submit#contact">
    <tr><td>Name</td><td><div align="right">
      <input type="text" name="name_txt" class="input">
      </div></td></tr>
    <tr><td>Email</td><td><div align="right">
      <input type="text" name="email_txt" class="input">
    </div></td></tr>
    <tr><td height="10"></td></tr>
    <tr><td colspan="2">Message</td></tr>
    <tr><td colspan="2"><textarea name="message_txt" class="textarea" style="width:200px; height:100px"></textarea></td></tr>
    <tr><td colspan="2"><?php echo recaptcha_get_html($publickey, $error); ?></td></tr>
    <tr><td colspan="2" style="padding-top:10px;"><input type="image" src="images/header_06.gif" name="submit" value="submit"></td></tr>
    </form>

Ben yanlış bir şey yapıyorum göremiyorum, ancak herhangi bir yapıcı eleştiri seviniriz.

TIA

5 Cevap

Ben bu çözmüş, ben rastlamak en alışılmadık şeylerden biridir, benim sözdizimi önce oldu:

<table>
<form>
<tr><td></td></tr>
</form>
</table>

Ben bu şekilde değiştirdim:

<form>
<table>
<tr><td></td></tr>
</table>
</form>

Bu nedenle anahtarın, aniden recaptcha_response_field ve recaptcha_challenge_field geri forma değerleri gönderiyorsunuz.

Ben bütün MY form değişkenleri anahtarı önce geri gönderdi var neden bu çünkü düşünemiyorum.

Tüm işaretçileri için teşekkürler.

iki kez onay gönderme - eğer php yoluyla örneğin bir kez Javascript ve bir kez API sadece bir çözüm bir kez geçerli dönmek için izin verir gibi ikinci bir başarısız olur.

Hope that helps, Josh

Form tr dışında olamaz, çünkü o ..... o masanın outisde olmak zorundadır ..... formu tabloya eklenen olamaz, olsa td sokulabilir.

Benim durumumda, hata belirtmeden formunu ayarlamak oldu:

method = "POST"

Şerefe!

Eğer doğru kelime yazarak emin misiniz?

bu bir recaptcha website : dan

Line 1       "true" or "false". True if the reCAPTCHA was successful
Line 2  if Line 1 is false, then this string will be an error code. reCAPTCHA can 
    display the error to the user (through the error parameter of api.recaptcha.net/challenge).
     Implementations should not depend on error code names, 
as they may change in the future.


    Example: If your response looks like this:

    false
    **incorrect-captcha-sol**

    ... you can add '&error=incorrect-captcha-sol' to the challenge request URL, 
and the user will get an error code.