การใช้ google reCaptcha กับ PHP
หน้าแรก Google การใช้ google reCaptcha กับ PHP
ก่อนอื่นต้องลงทะเบียนเพื่อใช้งานกันก่อน วิธีการก็ไม่ยุ่งยากครับแค่เข้าไปที่เว็บไซต์ reCAPTCHA จากนั้นก็กดที่ปุ่ม Get reCAPTCHA ด้านขวาบนเพื่อเข้าสู่ขั้นตอนการลงทะเบียน ที่หน้าลงทะเบียนให้ใส่ชื่อโดเมนเนมที่เราจะใช้ตรงช่องสำหรับกรอกโดเมนเนม (หนึ่งบรรทัดต่อหนึ่งโดเมนเนมครับ)
1 ลงทะเบียนโดเมนเนม
หลังจากลงทะเบียนเสร็จแล้วเราก็จะได้คีย์สำหรับใช้งานมาสองอัน อันแรกจะเป็นคีย์สาธารณะ (Public Key) ตรงช่องที่เขียนว่า Site key ส่วนอีกอันจะเป็นคีย์ลับ (Private Key) ตรงช่องที่เขียนว่า Secret key
2 คีย์
สำคัญ คีย์ลับนั้นต้องเก็บไว้ที่ฝั่งเซิฟเวอร์เท่านั้นระวังห้ามสลับกันเด็ดขาด
เมื่อได้คีย์มาแล้ว เราก็จะมาสร้างฟอร์มสำหรับให้ผู้ใช้ล็อกอินพร้อมกับใส่ reCAPTCHA แบบใหม่ลงไปด้วย
| Code |
| <form method="post"> <div class="form-group"> <label for="username">Username</label> <input type="text" name="username" id="username" class="form-control"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" name="password" id="password" class="form-control"> </div> <div class="form-group"> <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div> </div> <div class="form-group"> <input type="submit" value="Sign In" class="btn btn-primary"> </div> </form> |
จากตัวอย่างข้างบนจะสังเกตุเห็นว่ามี div อยู่หนึ่งอันที่มี class ชื่อว่า g-recaptcha ตรงนี้จะถูก reCAPTCHA เปลี่ยนเป็นกล่องสำหรับแสดง CAPTCHA เองครับ ส่วนตรง data-sitekey ให้ใส่คีย์สาธารณะที่ได้มาลงไป
จากนั้นเพิ่มจาวาสคริปต์ลงไปก่อนปิดแทกบอดี้
| Code |
| <script src='https://www.google.com/recaptcha/api.js'></script> |
ทดลองเรียกหน้าเว็บขึ้นมาดูจะได้ฟอร์มสำหรับล็อกอินพร้อมกับ reCAPTCHA แบบใหม่นี้ครับ ขั้นตอนต่อไปเราจะสร้าง PHP สำหรับตรวจสอบว่าผู้ใช้งานที่เข้าสู่ระบบนั้นเป็นมนุษย์หรือบอทกันแน่
| Code |
| <?php define('SITE_KEY', YOUR_SITE_KEY); define('SECRET_KEY', YOUR_SECRET_KEY); // Accept only POST method if ( ! strcmp($_SERVER['REQUEST_METHOD'], 'POST')) { $params = array( 'secret' => SECRET_KEY, 'response' => $_POST['g-recaptcha-response'], 'remoteip' => $_SERVER['REMOTE_ADDR'] ); $url = 'https://www.google.com/recaptcha/api/siteverify?' . http_build_query($params); $result = file_get_contents($url); // Convert JSON string to standard PHP object $resultObject = json_decode($result); if ($resultObject->success) { // TODO I'm a human. } else { // TODO I'm a robot. } } |
ตรงช่อง YOUR_SITE_KEY และ YOUR_SECRET_KEY ให้ใส่คีย์ที่ได้มาในตอนแรกครับ สิ่งที่จะต้องส่งไปตรวจสอบมีอยู่ 3 ฟิลด์คือ secret, response และ remoteip ตามตัวอย่างครับ ค่าที่ได้กลับมาจะอยู่ในรูปของ JSON ซึ่งจะมีฟิลด์ success บอกว่า true หรือ false (เป็นบูลีน) ซึ่งถ้าได้ false ก็จะมี error-codes มาด้วยครับ
เห็นไหมครับไม่ยากเลยแถมผู้ใช้งานก็มีความสุขไม่ต้องกรอกตัวอักษรหยึก ๆ ยือ ๆ ให้ปวดหัวอีกต่อไป ถือว่าเป็นการเปลี่ยนแปลงที่เยี่ยมยอดไปเลยครับ
ขอบคุณ: https://nomkhonwaan.com/No-CAPTCHA-reCAPTCHA/
ขึ้นไปด้านบน
