Dalam sistem pengesahan log masuk seperti log masuk tapak web atau aplikasi, pendaftaran dan mendapatkan kata laluan, fungsi kod pengesahan telah menjadi kaedah pengesahan pengguna yang biasa. Fungsi kod pengesahan boleh menghalang serangan berniat jahat dan serangan robot dengan berkesan, serta melindungi data pengguna dan keselamatan sistem. Artikel ini akan memperkenalkan cara menggunakan rangka kerja ThinkPHP6 untuk melaksanakan fungsi kod pengesahan.
1. Pengenalan kepada fungsi kod pengesahan ThinkPHP6
Fungsi kod pengesahan dalam rangka kerja ThinkPHP6 boleh dilaksanakan dengan menggunakan kelas thinkcaptchaCaptcha. Kelas ini menyediakan banyak pilihan untuk menetapkan panjang, fon, saiz fon, jenis baris gangguan, jenis titik gangguan, dll. kod pengesahan. Pilihan ini membolehkan kami menyesuaikan kod pengesahan kami sendiri untuk memenuhi keperluan senario perniagaan tertentu.
2. Langkah pelaksanaan
Selepas mengkonfigurasi persekitaran PHP dalam persekitaran setempat, anda boleh menggunakan komposer untuk memasang ThinkPHP6 rangka kerja. Masukkan arahan berikut pada baris arahan:
composer create-project topthink/think myproject
Ini akan mencipta direktori projek yang dipanggil myproject dan secara automatik memasang serta memulakan semua kebergantungan yang diperlukan untuk projek itu.
Dalam rangka kerja ThinkPHP6, kita boleh mentakrifkan kaedah kod pengesahan dalam pengawal. Sebagai contoh, kita boleh mencipta kaedah pengesahan dalam pengawal Indeks. Kaedah ini boleh menerima parameter untuk menentukan panjang kod pengesahan Kod adalah seperti berikut:
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } }
Dalam kod di atas, kami menggunakan kelas Captcha untuk menjana kod pengesahan. Kami lulus beberapa parameter untuk menentukan panjang kod pengesahan, sama ada untuk menggunakan garisan gangguan atau titik gangguan, dsb.
Dalam kod pengawal di atas, kami menggunakan kaedah $captcha->entry()
untuk memaparkan kod pengesahan. Kaedah ini akan menjana imej dan mengeluarkan imej terus pada penyemak imbas.
Kami boleh mencipta elemen img dalam templat atau fail lihat, tetapkan atribut srcnya kepada URL kaedah kod pengesahan yang kami buat dalam langkah 2, dan kod pengesahan boleh dipaparkan pada halaman hadapan. . Kod tersebut adalah seperti berikut:
<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
Dalam kod di atas, kami menggunakan fungsi url untuk menjana URL imej kod pengesahan, dan menetapkan panjang kepada 4. Apabila imej diklik, imej kod pengesahan dimuatkan semula untuk mengemas kini kod pengesahan.
Kami boleh menggunakan mekanisme sesi PHP untuk mendapatkan kod pengesahan yang dimasukkan oleh pengguna semasa menyerahkan data borang, dan kemudian membandingkannya dengan kod pengesahan yang dijana Bandingkan untuk mengesahkan sama ada kod pengesahan adalah betul. Kodnya adalah seperti berikut:
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } public function check() { $code = input('post.captcha'); if(captcha_check($code)){ // 验证码正确 }else{ // 验证码错误 } } }
Dalam kod di atas, kami mentakrifkan kaedah semakan untuk mengesahkan kod pengesahan yang dimasukkan oleh pengguna. Kami menggunakan fungsi captcha_check()
untuk membandingkan sama ada kod pengesahan yang dimasukkan oleh pengguna dan kod pengesahan yang dijana adalah sama.
Kadangkala kita perlu menyediakan fungsi menyegarkan semula kod pengesahan apabila pengguna memasukkan kod pengesahan dengan salah, supaya pengguna boleh melepasi pengesahan lebih cepat. Kita boleh mencapai fungsi ini dengan hanya menyegarkan halaman, atau dengan mengubah suai URL imej kod pengesahan.
Pada halaman hujung hadapan, tambahkan butang muat semula pada elemen imej kod pengesahan Klik butang ini untuk memuatkan semula imej kod pengesahan untuk mengemas kini kod pengesahan. Kodnya adalah seperti berikut:
<img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /> <button onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</button>
Dalam kod di atas, kami menggunakan kod JavaScript untuk mengubah suai atribut src bagi imej kod pengesahan dan lulus fungsi Math.random() sebagai parameter kepada fungsi url. Dengan cara ini setiap muat semula akan menjana URL baharu untuk memuatkan semula kod pengesahan.
Coretan kod di atas mungkin tidak cukup lengkap Berikut ialah kod lengkap menggunakan ThinkPHP6 untuk melaksanakan fungsi kod pengesahan.
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { // 验证码函数 public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } // 验证码校验函数 public function check() { $code = input('post.captcha'); if(captcha_check($code)){ // 验证码正确 }else{ // 验证码错误 } } }
Di atas adalah keseluruhan proses menggunakan ThinkPHP6 untuk melaksanakan fungsi kod pengesahan. Jika anda sedang membangunkan aplikasi web atau tapak web, maka menggunakan ciri CAPTCHA boleh meningkatkan keselamatan sistem dan melindungi data pengguna daripada serangan berniat jahat.
Atas ialah kandungan terperinci Cara menggunakan ThinkPHP6 untuk melaksanakan fungsi kod pengesahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!