Rumah >pembangunan bahagian belakang >tutorial php >Buat CAPTCHA dan Borang Hubungan tersuai dalam PHP
Tutorial ini, yang pada asalnya diterbitkan 10 tahun yang lalu, telah dikemas kini sepenuhnya dengan kod moden untuk menghasilkan captchas rawak. Banyak komen dalam benang perbincangan merujuk kepada kod yang sudah lapuk.
Proses automatik adalah manfaat utama pengekodan, memanfaatkan kelajuan dan ketepatan komputer. Walau bagaimanapun, kuasa ini boleh disalahgunakan untuk aktiviti berniat jahat seperti spam atau retak kata laluan. Tutorial ini memberi tumpuan kepada teknik anti-spam.
Pertimbangkan laman web dengan borang hubungan. Walaupun mudah untuk pengguna yang sah, ia terdedah kepada penyerahan spam automatik. Bot boleh membanjiri borang hubungan, forum, atau bahagian komen dengan pautan spam.
Penyelesaiannya? Ujian membezakan bot dari manusia: CAPTCHA yang disepadukan dengan bentuk PHP. Captchas tradisional hadir teks terdistorsi dalam imej; Manusia boleh membacanya, tetapi bot biasanya tidak boleh. Ini mengesahkan input pengguna terhadap teks CAPTCHA yang asal. CAPTCHA bermaksud "Ujian Turing Awam Automatik sepenuhnya untuk memberitahu komputer dan manusia selain."
Tutorial ini menunjukkan penciptaan dan mengintegrasikan CAPTCHA ke dalam bentuk hubungan.
Membuat Captcha
Kami akan menggunakan perpustakaan PHP GD. Tutorial sebelumnya merangkumi keupayaan lukisan teks dan bentuk GD. Kami juga akan menghasilkan rentetan rawak untuk Captcha.
Kod ini tinggal di captcha.php
. Fungsi generate_string()
mencipta rentetan rawak. Fungsi generate_string()
asal telah digantikan dengan random_int()
.
Php $ dibenarkan_chars = 'abcdefghijklmnopqrstuvwxyz'; fungsi penjana_string ($ input, $ kekuatan = 5) { $ input_length = strlen ($ input); $ random_string = ''; untuk ($ i = 0; $ i
Seterusnya, kami menjana latar belakang imej Captcha (200x50 piksel) menggunakan lima warna yang berbeza -beza.
Php $ image = ImageCreateTrueColor (200, 50); ImageAntialias ($ imej, benar); $ warna = []; $ Red = Rand (125, 175); $ Green = Rand (125, 175); $ Blue = Rand (125, 175); untuk ($ i = 0; $ i
Random $red
, $green
, dan nilai $blue
menentukan warna asas. Gelung mencipta warna gelap, disimpan dalam array $colors
. Warna paling ringan mengisi latar belakang, dan segi empat tepat seterusnya menambah kerumitan.
Contoh gambar latar belakang Captcha
Akhirnya, kita menarik rentetan rawak ke latar belakang. Warna huruf, koordinat Y, dan putaran adalah rawak untuk kesukaran tambahan.
Php $ Black = ImageColOrallocate ($ imej, 0, 0, 0); $ White = ImageColOrallocate ($ imej, 255, 255, 255); $ textColors = [$ hitam, $ putih]; $ fonts = [dirname (__ file __). '\ fonts \ acme.ttf', dirname (__ file __). '\ fonts \ ubuntu.ttf', dirname (__ file __). dirname (__ file __). '\ fonts \ playfairdisplay.ttf']; $ string_length = 6; $ captcha_string = generate_string ($ permitted_chars, $ string_length); untuk ($ i = 0; $ i
Fon yang dimuat turun memberikan variasi watak. Padding (15 piksel) ditambah, dan ruang yang tinggal dibahagikan sama rata di kalangan watak -watak.
Contoh imej Captcha (latar belakang dan teks)
Mengintegrasikan Captcha ke dalam borang hubungan
Sekarang, mari kita mengintegrasikan CAPTCHA ke dalam borang hubungan (dengan mengandaikan anda mempunyai borang hubungan yang sedia ada). Kami akan menggunakan sesi untuk menyimpan dan mengesahkan teks CAPTCHA.
Kod captcha.php
yang lengkap:
Php session_start (); $ dibenarkan_chars = 'abcdefghjklmnpqrstuvwxyz'; fungsi penjana_string ($ input, $ kekuatan = 10) { $ input_length = strlen ($ input); $ random_string = ''; untuk ($ i = 0; $ i
Tambahkan HTML ini di atas butang "Hantar Mesej" dalam borang hubungan anda:
<div class="elem-group"> <label for="captcha">Sila masukkan teks captcha</label> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Buat CAPTCHA dan Borang Kenalan tersuai dalam PHP"> <i class="fas fa-redo refresh-captcha"></i> </div>
Tambahkan JavaScript ini untuk membolehkan menyegarkan Captcha:
var refreshbutton = document.QuerySelector (". Refresh-captcha"); refreshButton.onclick = function () { Document.QuerySelector (". Captcha-image"). Src = 'captcha.php?' Date.now (); };
Contoh Borang Hubungi dengan Captcha
Akhirnya, kemas kini skrip pemprosesan borang kenalan anda ( contact.php
) untuk mengesahkan CAPTCHA:
Php session_start (); jika ($ _ post) { // ... (kod pemprosesan borang anda yang ada) ... jika (isset ($ _ post ['captcha_challenge']) && $ _post ['captcha_challenge'] == $ _Session ['captcha_text']) { // ... (proses penyerahan borang) ... } else { echo '<p> Anda memasuki Captcha yang salah.</p> '; } } else { echo '<p> Ada yang tidak kena</p> '; } ?>
Pemeriksaan ini jika input pengguna sepadan dengan teks Captcha yang disimpan sesi.
Kesimpulan
Tutorial ini mencipta CAPTCHA PHP tersuai dan mengintegrasikannya ke dalam bentuk hubungan, meningkatkan keselamatan dan pengalaman pengguna dengan butang penyegaran. Anda boleh menyesuaikannya untuk menggunakan kaedah CAPTCHA yang berbeza, seperti masalah matematik. Untuk ciri -ciri yang lebih maju, pertimbangkan untuk menggunakan plugin dari CodeCanyon.
Atas ialah kandungan terperinci Buat CAPTCHA dan Borang Hubungan tersuai dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!