שימוש ב-reCAPTCHA עם PHP

חשוב: אין יותר תמיכה בגרסה 1.0 של reCAPTCHA API. צריך לשדרג לגרסה 2.0. מידע נוסף

ספריית ה-PHP של reCAPTCHA מספקת דרך פשוטה להציב CAPTCHA לאתר ה-PHP שלכם, וכך לעזור לכם למנוע מבוטים לנצל אותו לרעה. הספרייה כוללת את reCAPTCHA API.

כדי להשתמש ב-reCAPTCHA עם PHP, אפשר להוריד reCAPTCHA PHP לספרייה. משם יהיה צורך בקובץ אחד בלבד (reCAPTCHAlib.php). שאר הקבצים דוגמאות, קריאה ודברים משפטיים -- הם לא משפיעים על הפונקציונליות.

התחלה מהירה

לאחר ההרשמה למפתחות ה-API, בהמשך מפורטות הוראות בסיסיות להתקנת reCAPTCHA באתר. A מלא המדריך לשימוש בפלאגין של PHP מופיע בהמשך.

בצד הלקוח (איך להציג תמונת CAPTCHA)

אם רוצים להשתמש בספריית PHP כדי להציג את הווידג'ט של reCAPTCHA, צריך להוסיף את קטע הקוד הזה בתוך הטופס <form> שבו יהיה הווידג'ט של reCAPTCHA ממוקם:

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

עם הקוד, הטופס עשוי להיראות כך:

  <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>

לא לשכוח להגדיר $publickey על ידי החלפת your_public_key ב- את המפתח הציבורי של ה-API.

שימו לב שהערך של ה'פעולה' הוא verify.php. עכשיו, verification.php הוא קובץ היעד שאליו נשלחים הערכים של הטופס הזה. אתם צריכים קובץ לאמת.php באותו מיקום כמו ה-HTML של הלקוח.

הפונקציה דרישה_once בדוגמה שלמעלה מצפה ל-reCAPTCHAlib.php להיות באותו אופן בספרייה בתור קובץ הטופס. אם הוא נמצא בספרייה אחרת, יש לקשר אותו בהתאם. לדוגמה אם הקובץ reCAPTCHAlib.php נמצא בספרייה שנקראת 'captcha' נמצאת באותה רמה ברמה של קובץ הטופס, הפונקציה תיראה כך: require_once('captcha/recaptchalib.php')

בצד השרת (איך בודקים אם המשתמש הזין את התשובה הנכונה)

יש למקם את הקוד הבא בחלק העליון של קובץ verification.php:

  <?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
  }
  ?>

בקוד שלמעלה:

  • recaptcha_check_answer מחזירה אובייקט שמייצג אם המשתמש השלמת האתגר בהצלחה.
  • אם הערך $resp->is_valid הוא True, סימן שאתגר ה-captcha הושלם כראוי וצריך להמשיך בעיבוד הטופס.
  • אם הערך $resp->is_valid שגוי, המשתמש לא הצליח לספק את ה-captcha הנכון עליכם להציג מחדש את הטופס כדי לאפשר לו ניסיון נוסף. במקרה הזה $resp->error יהיה קוד שגיאה שאפשר לספק ל-recaptcha_get_html. העברת קוד השגיאה תגרום לכך שבפקד ה-reCAPTCHA תוצג הודעה המסבירה שהמשתמש הזנתם את הטקסט בצורה שגויה וצריך לנסות שוב.
  • שימו לב שהקוד הזה מבקש את המפתח הפרטי, בלי לבלבל אותו באמצעות המפתח הציבורי. אפשר לקבל את הקוד מאותו הדף שבו נמצא המפתח הציבורי.

    כמו כן, צריך לוודא שהטופס מוגדר לקבל את משתני הטופס באמצעות $_POST, במקום $_REQUEST, ושהטופס עצמו משתמש בשיטת POST.

    זהו! ה-reCAPTCHA אמור לפעול עכשיו באתר שלך.

    קריאה נוספת

  • התאמה אישית של העיצוב והסגנון
  • טיפים והנחיות
  • פתרון בעיות
  • מדריך עזר ליישומי פלאגין של PHP

    בהמשך מופיעה רשימה מקיפה של כל השיטות לפלאגין reCAPTCHA PHP.

    הפונקציה reCAPTCHA_get_html

    הפונקציה recaptcha_get_html מציגה את ה-HTML שמציג את reCAPTCHA ה משתמש.

    recaptcha_get_html
    פרמטר
    $pubkey – מחרוזת. נדרש. המפתח הציבורי של reCAPTCHA שלך, מדף ההרשמה ל-API
    $error -- מחרוזת. אופציונלי (ברירת המחדל היא null) אם המחרוזת הזו מוגדרת, באזור reCAPTCHA יוצג קוד השגיאה שניתנו. קוד השגיאה הזה מגיע מ-ReCaptchaResponse->$error
    $use_ssl -- boolean. אופציונלי (ברירת המחדל היא FALSE) האם כדאי להשתמש ב-API מבוסס SSL? אם אתם מציגים דף משתמש ב-SSL, הקפידו להגדיר את הערך כ-TRUE כך שתיבת דו-שיח של שגיאה לא מופיעות בדפדפן של המשתמש.
    הערך המוחזר מחרוזת שמכילה HTML להצגה בדף האינטרנט.

    הפונקציה recaptcha_check_answer

    לאחר שהמשתמש ממלא את טופס ה-HTML, כולל התשובה שלו ל-CAPTCHA, אנחנו רוצה לבדוק את התשובה שלו כשהוא שולח את הטופס באמצעות recaptcha_check_answer. התשובה של המשתמש תופיע בשני שדות טופס: recaptcha_challenge_field וגם recaptcha_response_field ספריית reCAPTCHA תשלח בקשת HTTP לשרת reCAPTCHA ותאמת את פרטי המשתמש תשובה.

    recaptcha_check_answer
    פרמטר
    $privkey -- מחרוזת. נדרש. המפתח הפרטי שלך ל-reCAPTCHA, מדף ההרשמה ל-API.
    $remoteip -- מחרוזת. נדרש. כתובת ה-IP של המשתמש בפורמט 192.168.0.1
    $challenge -- מחרוזת. נדרש.
    הערך של שדה הטופס recaptcha_challenge_field
    $response -- מחרוזת. חובה הערך של שדה הטופס reCAPTCHA_response_field
    הערך המוחזר מופע של המחלקה ReCaptchaResponse

    ReCaptchaResponse
    שדה
    $is_valid -- boolean האם התשובה של reCAPTCHA הייתה חוקית?
    $error – מחרוזת אם התשובה לא הייתה חוקית, מה הייתה הבעיה? קוד השגיאה הזה יכול להיות משמש ב-reCAPTCHA_get_html
    הערך המוחזר קוד ה-HTML או כתובת ה-URL הגולמית לפענוח כתובת האימייל, בהתאם לפונקציה שבה אתה משתמש שנקראה.

    הסתרת דואר

    ספריית ה-PHP של reCAPTCHA כוללת קישורים לממשק ה-API של Mailהסתרה. הזה בעזרת API אפשר לכלול הודעת אימייל ב-reCAPTCHA כדי למנוע ממפיצי ספאם לראות אותה: . ...@example.com

    בחלק Mailהסתרה של ספריית ה-PHP נדרש מודול mcrypt של PHP.

    ה-API של Mailהסתרה מורכב משתי פונקציות: recaptcha_mailhide_html ו- recaptcha_mailhide_url. לפונקציות יש אותם פרמטרים. גרסת ה- _html החזרת HTML שאפשר להעביר ישירות לדף האינטרנט שלכם. החלק של שם המשתמש בהודעת האימייל שמועברת הוא נחתך ומוחלף בקישור שקורא ל-Mailהסתרה. הגרסה _url מספקת את כתובת ה-URL כדי לפענח את הודעת האימייל, ואתם יכולים להשאיר אותה כפי שהיא מופיעה ב-HTML.

    reCAPTCHA_mailhi_url / recaptcha_mailmute_html
    פרמטר
    $pubkey – מחרוזת המפתח הציבורי לשליחה ב-Mailהסתרה של דף ההרשמה
    $privkey – מחרוזת המפתח הפרטי Mailהסתרה מדף ההרשמה
    $email -- מחרוזת כתובת האימייל שרוצים להסתיר.

    הדוגמה הבאה מראה איך להשתמש ב-Mailהסתרה:

    <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>