חשוב: אין יותר תמיכה בגרסה 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>