Devdit
 

PHP ใส่ captcha บนเว็บไซต์ด้วย reCAPTCHA v3

2.3K

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 ให้แสดงข้อความว่า “การใช้งานไม่ถูกต้อง”

แก้ไข 2 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ