התקנת recaptcha בphp
-
@chagold כתב בהתקנת recaptcha בphp:
בדקתי בצד השרת עם var_dump($_POST) אבל לא נוסף כל משתנה מעבר למה שמוגדר בטופס (למרות שדף הקליינט חתום ע"י הספריה של גוגל שהיא מוגנת)
@dovid כתב בהתקנת recaptcha בphp:
בעת לחיצה על submit של טופס (בדרך כלל) אז לפני השליחה של הפרמטרים שלך (למשל מיל משתמש והודעה) הספריה של גוגל מבצעת תקשורת עם שרתי גוגל בקשר לאומדן האמינות של הפעילות, והיא מהם קוד זיהוי לצורך זיהוי עתידי של הפעולה שנבחנה.
זה לא קורה לבד.
אתה צריך ליזום את זה בJS, או להשתמש בattributes בלחצן Submit.
למשל<form method="POST" action="sendMessage.php"> <input type="text"> <button class="g-recaptcha" data-sitekey="reCAPTCHA_site_key" data-callback='onSubmit' data-action='submit'>שלח!</button> </form>
-
2 דברים שאני מסתבך.
-
יש 2 מקומות שונים באתר של recaptcha שניתן לקבל מפתחות.
א. בפאנל הראשי של recaptcha (משם הצילום מסך דלעיל), ושם יש מפתח אחד שמשמש גם עבור צד הקליינט (מול השרת) וגם עבור צד השרת (מול recaptcha).ב. בכתובת זו יש 2 מפתחות שונים, אחד לאתר והשני בין הצד שרת לrecaptcha.
מה עלי להכניס?
-
כל אחת מהמפתחות שאני שותל לקוד, הקריאה (מהצד שרת) לrecaptcha מחזירה
{"success":false,"error-codes":["missing-input-secret"]}
הקוד בצד שרת הוא
$recaptcha_secret = "6LfnWHQpAAAAADKdo8pJsd3BBDXayhALFfbLqv0P"; //$recaptcha_response = $_POST['g-recaptcha-response']; $recaptcha_response =$token ; $url = 'https://www.google.com/recaptcha/api/siteverify'; $data = array( 'secret' => $recaptcha_secret, 'response' => $recaptcha_response ); $options = array( 'http' => array ( 'header' => "Content-type: application/json", 'method' => 'POST', 'content' => http_build_query($data) ) ); $context = stream_context_create($options); $verify = file_get_contents($url, false, $context); $captcha_success = json_decode($verify); echo json_encode($captcha_success);die;
-
-
@chagold לא הבנתי מה זה הפאנל הראשי, אבל אתה צריך להשתמש במפתחות שבניהול (ב')
לגבי השגיאת missing-input-secret, אני לא מכיר PHP אבל נראה שצריך לשלוח בapplication/x-www-form-urlencoded
ולא בJSON
יש לך דוגמה כאן: https://gist.github.com/jonathanstark/dfb30bdfb522318fc819 -
@צדיק-תמים כתב בהתקנת recaptcha בphp:
@chagold צריך לכתוב ככה, לא?
'header' => 'Content-type: application/x-www-form-urlencoded'
אכן. עשיתי והשגיאה הקודמת חזרה
{"success":false,"error-codes":["invalid-input-secret"]}
-
@צדיק-תמים הצליח. תודה רבה!