reCAPTCHA'yı PHP ile kullanma

Önemli: reCAPTCHA API'nin 1.0 sürümü artık desteklenmiyor. Lütfen sürüm 2.0'a yükseltin. Daha fazla bilgi

reCAPTCHA PHP Kitaplığı, web sitenize CAPTCHA yerleştirmenin basit bir yolunu sunar. ekleyerek botların siteyi kötüye kullanmasını önlemenize yardımcı olur. Kitaplık reCAPTCHA API'si.

reCAPTCHA'yı PHP ile kullanmak için reCAPTCHA PHP'yi indirebilirsiniz kitaplığı'nda bulabilirsiniz. Orada yalnızca bir dosyaya ihtiyacınız olacak (recaptchalib.php). Diğer dosyalar okunmuş olanlar ve yasal öğeler gibi, işlevsellikleri etkilemez.

Hızlı Başlangıç

API anahtarlarınızı kaydettikten sonra sitenize reCAPTCHA'yı yüklemeyle ilgili temel talimatları aşağıda bulabilirsiniz. Tam PHP eklentisine ilişkin başvuru kılavuzunu aşağıda bulabilirsiniz.

İstemci Tarafı (CAPTCHA resmi nasıl gösterilir?)

reCAPTCHA widget'ını görüntülemek için PHP kitaplığını kullanmak istiyorsanız <form> içindeki bu kod snippet'ini reCAPTCHA widget'ının gösterileceği öğe bu yerin tarihi:

  require_once('recaptchalib.php');
  $publickey = "your_public_key"; // you got this from the signup page
  echo recaptcha_get_html($publickey);

Bu kodla formunuz aşağıdaki gibi görünebilir:

  <html>
    <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
      <!-- your HTML content -->

      <form method="post" action="verify.php">
        <?php
          require_once('recaptchalib.php');
          $publickey = "your_public_key"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>

      <!-- more of your HTML content -->
    </body>
  </html>

your_public_key öğesini şununla değiştirerek $publickey değerini ayarlamayı unutmayın: API ortak anahtarınız.

"İşlem" değerinin, özelliğinin değeri "verify.php" şeklindedir. Şimdi, Verify.php hedef dosyasını kullanarak bu formun değerlerinin gönderildiği hedef dosyayı kullanın. Bu yüzden, projenizi Verify.php dosyasında istemci html ile aynı konumda bulunur.

Yukarıdaki örnekte yer alan request_once işlevi, reCAPTCHA'nın aynı olmasını bekler. dizinini form dosyanız olarak kullanın. Dosya başka bir dizindeyse düzgün bir şekilde bağlamanız gerekir. Örneğin, recaptchalib.php dosyanız "captcha" adlı dizindeyse aynı düzeyinde ayarladığınızı varsayalım. Bu durumda işlev aşağıdaki gibi görünür: require_once('captcha/recaptchalib.php')

Sunucu Tarafı (Kullanıcının doğru yanıtı girip girmediğini test etme)

Aşağıdaki kod, Verify.php dosyasının en üstüne yerleştirilmelidir:

  <?php
  require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $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
  }
  ?>

Yukarıdaki kodda:

  • recaptcha_check_answer, kullanıcının Yarışmayı başarıyla tamamladı.
  • $resp->is_valid true ise, captcha testi doğru şekilde tamamlanmış demektir. Bu durumda, form işlemeye devam etmeniz gerekir.
  • $resp->is_valid yanlışsa kullanıcı doğru captcha'yı sağlayamamış demektir. metnine geri dönebilir ve başka bir deneme için formu yeniden görüntülemeniz gerekir. Bu durumda $resp->error, recaptcha_get_html adresine sağlanabilecek bir hata kodu olacaktır. Hata kodunu iletmek, reCAPTCHA kontrolünde kullanıcının Metin yanlış girildiğinden tekrar denemelisiniz.
  • Bu kodun, karıştırılmaması gereken özel anahtarı istediğine dikkat edin. kullanın. Bunu ortak anahtarın bulunduğu sayfadan alırsınız.

    Ayrıca formunuzun, yerine $_POST kullanarak form değişkenlerini alacak şekilde ayarlandığından emin olun. $_REQUEST ve formun kendisinin POST yöntemini kullandığını belirtmek.

    Hepsi bu kadar! reCAPTCHA artık sitenizde çalışıyor olmalıdır.

    Diğer Okumalar

  • Görünüm ve İzlenim Özelleştirme
  • İpuçları ve kurallar
  • Sorun giderme
  • PHP Eklenti Başvuru Kılavuzu

    Aşağıda, reCAPTCHA PHP Eklentisinin tüm yöntemlerinin kapsamlı bir listesini bulabilirsiniz.

    reCAPTCHAa_get_html işlevi

    recaptcha_get_html işlevi, reCAPTCHA'yı kullanıcıya sunan HTML'yi "the" belirtir.

    recaptcha_get_html
    Parametre
    $pubkey -- dize. gereklidir. API Kayıt Sayfası'ndaki reCAPTCHA ortak anahtarınız
    $error -- dize. isteğe bağlı (varsayılan değer boştur) Bu dize ayarlanırsa reCAPTCHA alanında hata kodu gösterilir değeri. Bu hata kodu ReCaptchaResponse->$error'dan geliyor
    $use_ssl -- boolean. isteğe bağlı (varsayılan değer: yanlış) SSL tabanlı API kullanılmalı mı? Bir sayfayı bir hata iletişim kutusu görmemesi için bunu doğru olarak ayarladığınızdan emin olun. kullanıcının tarayıcısında görünür.
    Döndürülen değer Web sayfasına yerleştirilecek HTML'yi içeren bir dize.

    reCAPTCHAa_check_answer işlevi

    Kullanıcı HTML formunu ve CAPTCHA için yanıtını doldurduktan sonra, yanıtlarını kontrol etmek için recaptcha_check_answer işlevi. Kullanıcının yanıtı iki form alanında olur: recaptcha_challenge_field ve recaptcha_response_field. İlgili içeriği oluşturmak için kullanılan reCAPTCHA kitaplığı, reCAPTCHA sunucusuna bir HTTP isteğinde bulunur ve kullanıcının ver.

    recaptcha_check_answer
    Parametre
    $privkey -- dize. gereklidir. API Kayıt Sayfası'ndaki reCAPTCHA özel anahtarınız.
    $remoteip -- dize. gereklidir. Kullanıcının IP adresi (192.168.0.1 biçiminde)
    $challenge -- dize. gereklidir.
    recaptcha_challenge_field form alanının değeri
    $response -- dize. zorunlu recaptcha_response_field form alanının değeri
    Döndürülen değer ReCaptchaResponse sınıfının bir örneği

    ReCaptchaResponse
    Alan
    $is_valid -- boolean reCAPTCHA, yanıtın geçerli olduğunu düşünüyor muydu?
    $error -- dize Yanıt geçersizse sorun neydi? Bu hata kodu, reCAPTCHA'da kullanılır
    Döndürülen değer Hangi işlevi kullandığınıza bağlı olarak, e-posta adresinin kodunu çözmek için HTML veya ham URL çağrıldı.

    Mailhide

    reCAPTCHA PHP Kitaplığı, Mailhide API için bağlamalar içerir. Bu Bu API, spam yapanların görmesini önlemek için e-postaları reCAPTCHA içine sarmalamanıza olanak tanır: sınav...@example.com.

    PHP Kitaplığı'nın Mailhide bölümü için PHP mcrypt modülü gerekir.

    Mailhide API iki işlevden oluşur: recaptcha_mailhide_html ve recaptcha_mailhide_url. Fonksiyonlar aynı parametrelere sahiptir. _html sürümü HTML değerini döndürür reklam etiketleri oluşturun. E-postanın iletilen kullanıcı adı bölümü kısaltılır ve yerine Mailhide'ı çağıran bir bağlantı yerleştirir. _url sürümü size URL'yi verir kodunu çözer ve e-postayı HTML'ye yerleştirme işini size bırakır.

    reCAPTCHAa_mailhide_url / recaptcha_mailhide_html
    Parametre
    $pubkey -- dize Kayıt sayfasındaki Mailhide ortak anahtarı
    $privkey -- dize Kayıt sayfasındaki Mailhide özel anahtarı
    $email -- dize Gizlemek istediğiniz e-posta adresi.

    Aşağıdaki örnekte Mailhide'ın nasıl kullanılacağı gösterilmektedir:

    <html><body>
    <?
    require_once ("recaptchalib.php");
    // get a key at http://www.google.com/recaptcha/mailhide/apikey
    $mailhide_pubkey = '';
    $mailhide_privkey = '';
    ?>
    The Mailhide encoding of example@example.com is
    <?
    echo recaptcha_mailhide_html ($mailhide_pubkey,
                                  $mailhide_privkey,
                                  "example@example.com");
    ?>.
    <br>
    The url for the email is:
    <?
    echo recaptcha_mailhide_url ($mailhide_pubkey,
                                 $mailhide_privkey,
                                 "example@example.com");
    ?>
    <br>
    </body></html>