เริ่มต้นให้เข้าสู่หน้าสำหรับขอใช้งานบริการ reCAPTCHA ของ Goolge
ให้เรากดไปที่ปุ่ม Get reCAPTCHA หรือหาปุ่มที่แสดงถึงการขอใช้งาน reCAPTCHA
กรณีหน้าเพจของ google เปลี่ยนแปลง
หากยังไม่ได้ล็อกอิน ต้องทำการล็อกอินด้วยบัญชีของ google ก่อน
เมื่อเข้าสู่หน้า https://www.google.com/recaptcha/admin#list ให้เราทำการลงทะเบียน
เว็บไซต์ กรอกข้อมูล Label ป้ายกำกับชื่อในเราสามารถกรอกเป็น โดนเมนได้เลย
และส่วนของ Domains เป็นโดนเมนของเรา สามารถกรอกได้หลายโดนเมนโดยกรอก
บรรทัดละโดนเมนตามจำนวนที่ต้องการ
จากนั้นกดปุ่ม register หรือลงทะเบียน
เราจะได้ Site key และ Secret key ตามรูป (ในรูปจะปิดไว้)
ตอนนี้เราสามารถนำค่า ที่ได้ไปใช้งานในส่วนการเปิดใช้งาน Google reCAPTCHA ได้แล้ว
สมมติเราสร้างฟอร์มสำหรับส่งข้อมูลในเว็บไซต์ของเราชื่อ
myform1.php โค้ดดังนี้
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Google reCAPTCHA</title> </head> <body> <form name="form1" method="post" action="send.php"> <div>Message: </div> <div> <textarea name="msg" cols="50" rows="3" id="msg"></textarea> </div> <div> <br> <button type="submit" id="btn_submit" name="btn_submit" disabled>Send Message</button> </div> </form> </body> </html>
ให้แทรก โค้ดเรียกใช้ recaptcha ไฟล์ของ google ในส่วนของแท็ก <head>
<script src='https://www.google.com/recaptcha/api.js'></script>
ถ้าต้องการให้แสดงเป็นภาษาไทย ให้เพิ่ม parameter เข้าไปเป็น
<script src='https://www.google.com/recaptcha/api.js?hl=th'></script>
ดูการตั้งค่าเพิ่มเติม https://developers.google.com/recaptcha/docs/display
ต่อไปให้แทรกส่วนของโค้ดแสดง reCAPTCHA ในส่วนของฟอร์มข้อมูล
<div class="g-recaptcha" data-sitekey="your_sitekey"></div>
ในที่นี้เราจะกำหนดให้เรียกใช้ฟังก์ชั่น เมื่อตรวจสอบสำเร็จ ด้วยแทรก data-callback เข้าไป
และเรียกใช้ฟังก์ชั่นเพิ่มเติม ที่เราจะสร้างขึ้น
<script> function makeaction(){ document.getElementById('btn_submit').disabled = false; } </script> <div class="g-recaptcha" data-callback="makeaction" data-sitekey="your_sitekey"></div>
โดยเมื่อเปิดหน้าฟอร์มเข้ามาครั้งแรกปุ่มส่งข้อมูลจะถูก disabled ไว้ หรือไม่สามารถกดให้ทำงานได้
และเมื่อตรวจสอบผ่าน google reCAPTCHA แล้วให้ปุ่มส่งข้อมูล active สามารถกดส่งข้อมูลได้
เราจะได้โค็ตไฟล์ myform1.php แบบเต็มดังนี้
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Google reCAPTCHA</title> <script src='https://www.google.com/recaptcha/api.js?hl=th'></script> </head> <body> <form name="form1" method="post" action="send.php"> <div>Message: </div> <div> <textarea name="msg" cols="50" rows="3" id="msg"></textarea> </div> <script> function makeaction(){ document.getElementById('btn_submit').disabled = false; } </script> <div class="g-recaptcha" data-callback="makeaction" data-sitekey="your_sitekey"></div> <div> <br> <button type="submit" id="btn_submit" name="btn_submit" disabled>Send Message</button> </div> </form> </body> </html>
ตัวอย่างผลลัพธ์ ก่อนคลิกตรวจสอบ
หลังคลิกตรวจสอบผ่านแล้ว
จากนั้นให้ทำการตรวจสอบในไฟล์รับค่าข้อมูลที่ส่งมา ดูตัวอย่างการใช้งานตามโค้ด send.php
<?php session_start(); // โค้ดไฟล์ dbconnect.php ดูได้ที่ http://niik.in/que_2398_5642 require_once("dbconnect.php"); // ตรวจสอบเมื่อกดปุ่ม และเมื่อส่งค่า g-recaptcha-response มาตรวจสอบ if(isset($_POST['btn_submit']) && isset($_POST['g-recaptcha-response'])){ $recaptcha_secret = "ใส่ reCAPTCHAP_secret_key"; $recaptcha_response = trim($_POST['g-recaptcha-response']); $recaptcha_remote_ip = $_SERVER['REMOTE_ADDR']; $recaptcha_api = "https://www.google.com/recaptcha/api/siteverify?". http_build_query(array( 'secret'=>$recaptcha_secret, 'response'=>$recaptcha_response, 'remoteip'=>$recaptcha_remote_ip ) ); $response=json_decode(file_get_contents($recaptcha_api), true); /* echo "<pre>"; print_r($response); echo "</pre>"; */ } if(isset($response) && $response['success'] == true){ // ตรวจสอบสำเร็จ echo "Successful!"; // ทำคำสั่งเพิ่มข้อมูลหรืออื่นๆ }else{ echo "Access denied!"; } ?>
เปลี่ยนตรง your_secretkey เป็นค่า Secret key ของเรา การทำงาน ตามตัวอย่างคือ ถ้ามีการกดปุ่มส่งข้อมูลมา
และ การตรวจสอบตัวตน เป็น true ระบบจึงจะทำงานตามคำสั่ง
เท่านี้เราก็สามารถป้องกัน spam หรือการส่งข้อมูลจากโปรแกรมอัตโนมัติมาในเว็บไซต์ของเราอย่างง่ายได้แล้ว