PHP ใส่ captcha บนเว็บไซต์ด้วย reCAPTCHA v3 บทความนี้สอนการติดตั้ง captcha ซึ่งเป็นระบบเพื่อทดสอบว่าผู้ใช้งานเป็นมนุษย์จริงหรือไม่ โดยใช้เทคโนโลยี reCAPTCHA v3 ของ Google มีรายละเอียดดังนี้
ตัวอย่าง วิธีสร้าง Google reCAPTCHA v3
ตัวอย่าง PHP ใส่ captcha บนเว็บไซต์ด้วย reCAPTCHA v3
1. ติดตั้ง Public Key ฝั่ง Client ผ่าน JavaScript โดยการเปลี่ยน [PUBLIC-KEY] เป็นคีย์ของเว็บไซต์ที่ได้รับมา
<script src="https://www.google.com/recaptcha/api.js?render=[PUBLIC-KEY]"></script>
<script>
grecaptcha.ready(() => {
grecaptcha.execute('[PUBLIC-KEY]', { action: 'contact' }).then(token => {
document.querySelector('#res').value = token;
});
});
</script>
2. สร้างฟอร์ม HTML ส่วนสำคัญคือ input hidden ที่ทำหน้าที่เก็บค่า token ของ reCAPTCHA
<form action="index.php" method="post">
ชื่อ <input type="text" name="name">
<button>ตกลง</button>
<input type="hidden" name="res" id="res">
</form>
3. สร้างไฟล์ PHP เพื่อทดสอบคีย์ว่าผู้ใช้งานเป็นมนุษย์จริงหรือไม่ ให้ทำการเปลี่ยน [PRIVATE-KEY] เป็นคีย์ลับที่ได้รับมา
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['res'])) {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$secret = '[PRIVATE-KEY]';
$res = $_POST['res'];
$v = file_get_contents($url . '?secret=' . $secret . '&response=' . $res);
$v = json_decode($v);
if( isset( $v->score ) ) {
if ( $v->score >= 0.5 ) {
var_dump( $v );
echo "<div>การใช้งานถูกต้อง recaptcha ทำงาน</div>";
} else {
echo "การใช้งานไม่ถูกต้อง";
}
}
}
?>
PHP ใส่ captcha บนเว็บไซต์ด้วย reCAPTCHA v3 จากตัวอย่างข้อมูลที่ต้องเปลี่ยนจะมี 2 ส่วน คือ [PUBLIC-KEY] และ [PRIVATE-KEY] ส่วนตัวแปรที่ใช้สำหรับวัดระดับ หรือทดสอบว่าผู้ใช้งานเป็นมนุษย์จริงหรือไม่ คือตัวแปร score จากตัวอย่างคือ $v→score โดยค่านี้จะอยู๋ระหว่าง 0.0 - 1.0 โดย 0.0 คือคาดการว่าอาจจะไม่ใช่มนุษย์ ส่วน 1.0 คือคาดการว่าเป็นมนุษย์อย่างแน่นอน จากโค้ดคือ if ( $v->score >= 0.5 ) หมายความว่าถ้า score มีค่ามากกว่า หรือเท่ากับ 0.5 ให้ถือว่าเป็นมนุษย์ให้โปรแกรมสามารถรับค่า และทำงานต่อไปได้ หากน้อยกว่า 0.5 ให้แสดงข้อความว่า “การใช้งานไม่ถูกต้อง”