สำคัญ: ไม่รองรับ reCAPTCHA API เวอร์ชัน 1.0 อีกต่อไป โปรดอัปเกรดเป็นเวอร์ชัน 2.0 ดูข้อมูลเพิ่มเติม
ไลบรารี reCAPTCHA PHP มอบวิธีง่ายๆ ในการวาง CAPTCHA บน เว็บไซต์ PHP ของคุณเพื่อช่วยป้องกันการละเมิดโดยบ็อต ไลบรารีครอบคลุม reCAPTCHA API
หากต้องการใช้ reCAPTCHA กับ PHP คุณสามารถดาวน์โหลด reCAPTCHA PHP ได้ คลัง คุณต้องใช้เพียงไฟล์เดียวจากที่นั่น (recaptchalib.php) ไฟล์อื่นๆ ตัวอย่าง, Readme และเนื้อหาด้านกฎหมาย -- ทั้งหมดไม่ส่งผลต่อฟังก์ชันการทำงาน
คู่มือเริ่มต้นฉบับย่อ
หลังจากลงชื่อสมัครใช้คีย์ API แล้ว ด้านล่างนี้คือวิธีการพื้นฐานสำหรับการติดตั้ง reCAPTCHA ในเว็บไซต์ เต็ม คู่มืออ้างอิงปลั๊กอิน PHP มีอยู่ด้านล่างนี้
ฝั่งไคลเอ็นต์ (วิธีทำให้รูปภาพ CAPTCHA ปรากฏขึ้น)
หากคุณต้องการใช้ไลบรารี PHP เพื่อแสดงวิดเจ็ต reCAPTCHA คุณจะต้องแทรก ข้อมูลโค้ดนี้ภายใน <form> องค์ประกอบที่วิดเจ็ต reCAPTCHA จะปรากฏ ตำแหน่ง:
require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey);
ด้วยโค้ด แบบฟอร์มของคุณอาจมีลักษณะดังนี้
<html> <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers --> <!-- your HTML content --> <form method="post" action="verify.php"> <?php require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" /> </form> <!-- more of your HTML content --> </body> </html>
อย่าลืมตั้งค่า $publickey โดยแทนที่ your_public_key
ด้วย
คีย์สาธารณะ API ของคุณ
โปรดทราบว่าค่าของ "action" คือ "verify.php" ในตอนนี้ Verify.php คือ ปลายทาง ที่จะส่งค่าของแบบฟอร์มนี้ไปให้ ดังนั้นคุณจะต้องมีไฟล์ Verify.php ในตำแหน่งเดียวกับ HTML ของไคลเอ็นต์
ฟังก์ชัน required_once ในตัวอย่างข้างต้นควรคาดหวังโค้ด reCAPTCHAtchalib.php
เป็นไฟล์ฟอร์มของคุณ หากไฟล์อยู่ในไดเรกทอรีอื่น คุณต้องลิงก์อย่างถูกต้อง
ตัวอย่างเช่น หาก reCAPTCHA ของคุณอยู่ในไดเรกทอรีที่ชื่อ "captcha" ที่อยู่บนเดียวกัน
เป็นไฟล์แบบฟอร์มของคุณ ฟังก์ชันจะมีลักษณะดังนี้
require_once('captcha/recaptchalib.php')
ฝั่งเซิร์ฟเวอร์ (วิธีทดสอบว่าผู้ใช้ป้อนคำตอบที่ถูกต้องหรือไม่)
ควรวางโค้ดต่อไปนี้ไว้ที่ด้านบนสุดของไฟล์ Verify.php:
<?php require_once('recaptchalib.php'); $privatekey = "your_private_key"; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } else { // Your code here to handle a successful verification } ?>
ในโค้ดด้านบน
recaptcha_check_answer
จะแสดงผลออบเจ็กต์ที่แสดงว่าผู้ใช้
สำเร็จแล้ว$resp->is_valid
เป็นจริง แสดงว่าคำถาม CAPTCHA เสร็จสมบูรณ์และคุณควรดำเนินการแบบฟอร์มต่อ$resp->is_valid
เป็นเท็จ ผู้ใช้จะป้อน CAPTCHA ที่ถูกต้องไม่ได้
และคุณควรจะแสดงฟอร์มดังกล่าวอีกครั้งเพื่อให้ดูอีกครั้ง ในกรณีนี้
$resp->error
จะเป็นรหัสข้อผิดพลาดที่ระบุให้กับ recaptcha_get_html
ได้
การส่งผ่านรหัสข้อผิดพลาดทำให้ตัวควบคุม reCAPTCHA แสดงข้อความที่อธิบายผู้ใช้
ป้อนข้อความไม่ถูกต้องและควรลองอีกครั้งโปรดสังเกตว่าโค้ดนี้จะขอคีย์ส่วนตัว ซึ่งไม่ควรสับสน ด้วยคีย์สาธารณะ คุณจะได้รับข้อมูลดังกล่าวจากหน้าเดียวกับคีย์สาธารณะ
และตรวจสอบว่าได้ตั้งค่าแบบฟอร์มให้รับตัวแปรแบบฟอร์มโดยใช้ $_POST แทนที่จะเป็น $_REQUEST และฟอร์มนั้นใช้วิธีการ POST
เท่านี้ก็เรียบร้อย ตอนนี้ reCAPTCHA ควรใช้งานได้ในเว็บไซต์ของคุณ
อ่านเพิ่มเติม
คู่มืออ้างอิงปลั๊กอิน PHP
ด้านล่างนี้เป็นรายการที่ครอบคลุมของวิธีการทั้งหมดของปลั๊กอิน reCAPTCHA PHP
ฟังก์ชัน reCAPTCHAtcha_get_html
ฟังก์ชัน recaptcha_get_html
จะแสดง HTML ที่แสดง reCAPTCHA ต่อ
เวลา
ผู้ใช้
recaptcha_get_html | |
พารามิเตอร์ | |
$pubkey -- สตริง ต้องระบุ | คีย์สาธารณะ reCAPTCHA จากหน้าลงชื่อสมัครใช้ API |
$error -- สตริง ไม่บังคับ (ค่าเริ่มต้นคือ null) | หากตั้งค่าสตริงนี้ พื้นที่ reCAPTCHA จะแสดงรหัสข้อผิดพลาด ที่ให้ไว้ รหัสข้อผิดพลาดนี้มาจาก ReCaptchaResponse->$error |
$use_ssl -- boolean. ไม่บังคับ (ค่าเริ่มต้นเป็นเท็จ) | ควรใช้ API แบบ SSL หรือไม่ หากคุณกำลังแสดงหน้าเว็บใน ผู้ใช้ผ่านทาง SSL ตรวจสอบว่าได้ตั้งค่านี้เป็น "จริง" เพื่อไม่ให้กล่องโต้ตอบข้อผิดพลาด ปรากฏขึ้นในเบราว์เซอร์ของผู้ใช้ |
ผลลัพธ์ | สตริงที่มี HTML ที่จะวางในหน้าเว็บ |
ฟังก์ชัน reCAPTCHAtcha_check_answer
หลังจากที่ผู้ใช้กรอกแบบฟอร์ม HTML และตอบคำถาม CAPTCHA แล้ว
ต้องการตรวจสอบคำตอบเมื่อส่งแบบฟอร์มโดยใช้
recaptcha_check_answer
คำตอบของผู้ใช้จะอยู่ในช่องฟอร์ม 2 ช่อง
recaptcha_challenge_field
และ recaptcha_response_field
ไลบรารี reCAPTCHA จะส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ reCAPTCHA และยืนยันข้อมูลของผู้ใช้
คำตอบ
recaptcha_check_answer | |
พารามิเตอร์ | |
$privkey -- สตริง ต้องระบุ | คีย์ส่วนตัว reCAPTCHA จากหน้าลงชื่อสมัครใช้ API |
$remoteip -- สตริง ต้องระบุ | ที่อยู่ IP ของผู้ใช้ในรูปแบบ 192.168.0.1 |
$challenge -- สตริง ต้องระบุ |
ค่าของฟิลด์ reCAPTCHAtcha_challenge_field |
$response -- สตริง ต้องระบุ | ค่าในช่อง reCAPTCHAtcha_response_field |
ผลลัพธ์ | อินสแตนซ์ของคลาส ReCaptchaResponse |
ReCaptchaResponse | |
ช่อง | |
$is_valid -- boolean | reCAPTCHA เชื่อว่าคำตอบถูกต้องไหม |
$error -- สตริง | หากคำตอบไม่ถูกต้อง คุณพบปัญหาอะไร รหัสข้อผิดพลาดนี้อาจเป็น ใช้ใน reCAPTCHAtcha_get_html |
ผลลัพธ์ | HTML หรือ URL ดิบที่จะถอดรหัสที่อยู่อีเมล ซึ่งขึ้นอยู่กับว่าคุณใช้บริการใด โทรออก |
เมลซ่อน
ไลบรารี reCAPTCHA PHP ประกอบด้วยการเชื่อมโยงสำหรับ Mailhide API ช่วงเวลานี้ API ให้คุณรวมอีเมลไว้ใน reCAPTCHA เพื่อป้องกันไม่ให้นักส่งสแปมเห็นได้ การสอบ...@example.com
ส่วน Mailhide ของไลบรารี PHP ต้องการโมดูล mcrypt ของ PHP
Mailhide API ประกอบด้วยสองฟังก์ชัน recaptcha_mailhide_html
และ
recaptcha_mailhide_url
ฟังก์ชันต่างๆ มีพารามิเตอร์เดียวกัน เวอร์ชัน _html
แสดงผล HTML
ซึ่งสามารถใส่ลงในหน้าเว็บได้โดยตรง ส่วนของชื่อผู้ใช้ของอีเมลที่ส่งผ่าน
จะถูกตัดออกและแทนที่ด้วยลิงก์ที่เรียกใช้ Mailhide เวอร์ชัน _url จะให้ URL แก่คุณ
เพื่อถอดรหัสอีเมลและเหลือไว้ให้คุณวางอีเมลใน HTML
Recaptcha_mailhide_url / สำรองtcha_mailhide_html | |
พารามิเตอร์ | |
$pubkey -- สตริง | คีย์สาธารณะ Mailhide จากหน้าลงชื่อสมัครใช้ |
$privkey -- สตริง | คีย์ส่วนตัว Mailhide จากหน้าลงชื่อสมัครใช้ |
$email -- สตริง | อีเมลที่ต้องการซ่อน |
ตัวอย่างต่อไปนี้แสดงวิธีใช้ Mailhide
<html><body> <? require_once ("recaptchalib.php"); // get a key at http://www.google.com/recaptcha/mailhide/apikey $mailhide_pubkey = ''; $mailhide_privkey = ''; ?> The Mailhide encoding of example@example.com is <? echo recaptcha_mailhide_html ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?>. <br> The url for the email is: <? echo recaptcha_mailhide_url ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?> <br> </body></html>