Rumah > Artikel > rangka kerja php > Penjanaan dan pengesahan kod pengesahan ThinkPHP6: melindungi keselamatan aplikasi
ThinkPHP6 penjanaan dan pengesahan kod pengesahan: Lindungi keselamatan aplikasi
Dengan perkembangan Internet, pelbagai jenis serangan berniat jahat muncul tanpa henti. Untuk melindungi keselamatan aplikasi, kod pengesahan telah menjadi langkah keselamatan biasa. Artikel ini akan memperkenalkan cara menjana dan mengesahkan kod pengesahan dalam rangka kerja ThinkPHP6 dan menerangkannya melalui contoh kod.
1. Jana kod pengesahan
Dalam ThinkPHP6, penjanaan kod pengesahan boleh dicapai dengan menggunakan pakej sambungan topthink/think-captcha
. Mula-mula, kita perlu menambah dependensi dalam fail composer.json
dalam direktori projek: topthink/think-captcha
来实现。首先,我们需要在项目目录中的 composer.json
文件中添加依赖关系:
"require": { "topthink/think-captcha": "^1.0" }
然后,执行 composer update
命令来安装依赖包。安装完成后,我们可以在控制器或服务层中使用验证码对象来生成验证码。
假设我们在登录页面中需要生成验证码,可以在控制器中进行如下操作:
use thinkcaptchaacadeCaptcha; class LoginController extends Controller { public function index() { // 生成验证码 $captcha = Captcha::create(); // 把验证码保存到session中 session('captcha', $captcha->getCode()); // 渲染登录页面,将生成的验证码图片和表单一起展示 return view('login', [ 'captcha_img' => $captcha->getImage(), ]); } }
在上述代码中,我们首先使用 Captcha
类的 create
方法生成了一个验证码对象,并将验证码保存到了 session
中。然后,将生成的验证码图片和登录表单一起传递给登录页面进行展示。
二、验证验证码
在用户提交登录表单后,我们需要验证用户输入的验证码是否正确。ThinkPHP6框架提供了方便的方法来进行验证码验证。
在登录页面表单提交后,我们可以在控制器中进行如下操作来验证验证码:
use thinkcaptchaacadeCaptcha; class LoginController extends Controller { public function login() { // 获取用户输入的验证码 $inputCode = input('captcha'); // 获取session中保存的验证码 $sessionCode = session('captcha'); // 进行验证码验证 if (!captcha_check($inputCode, $sessionCode)) { // 验证码错误,返回错误信息 return '验证码错误!'; } // 验证码验证通过,执行登录逻辑 // ... } }
在上述代码中,我们首先通过 input
函数获取用户输入的验证码,然后通过 session
函数获取之前生成的验证码。最后,使用 captcha_check
函数来验证验证码是否正确。如果验证码验证通过,则执行登录逻辑;否则,返回错误信息。
三、在视图中展示验证码
为了在登录页面中展示验证码,我们需要在对应的视图文件中进行相应的操作。假设我们的登录视图文件是 login.html
,可以在该文件中添加如下代码:
<form action="/login" method="post"> <div> <label for="captcha">验证码:</label> <input type="text" id="captcha" name="captcha" required> </div> <div> <img src="{{ captcha_img }}" alt="验证码"> </div> <div> <button type="submit">登录</button> </div> </form>
在上述代码中,我们首先添加了一个输入框来接收用户输入的验证码。然后,通过 img
标签来展示验证码图片,其中 {{ captcha_img }}
rrreee
composer update
untuk memasang pakej dependency. Selepas pemasangan selesai, kami boleh menggunakan objek kod pengesahan dalam pengawal atau lapisan perkhidmatan untuk menjana kod pengesahan. Andaikan kita perlu menjana kod pengesahan dalam halaman log masuk, kita boleh melakukan perkara berikut dalam pengawal: 🎜rrreee🎜Dalam kod di atas, kita mula-mula menggunakan create
Captcha
class > Kaedah menjana objek kod pengesahan dan menyimpan kod pengesahan ke session
. Kemudian, hantar imej kod pengesahan yang dijana dan borang log masuk ke halaman log masuk untuk paparan. 🎜🎜2. Sahkan kod pengesahan🎜🎜Selepas pengguna menyerahkan borang log masuk, kami perlu mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Rangka kerja ThinkPHP6 menyediakan kaedah yang mudah untuk pengesahan kod pengesahan. 🎜🎜Selepas borang halaman log masuk diserahkan, kami boleh melakukan operasi berikut dalam pengawal untuk mengesahkan kod pengesahan: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mendapatkan kod pengesahan yang dimasukkan oleh pengguna melalui session
. Akhir sekali, gunakan fungsi captcha_check
untuk mengesahkan bahawa kod captcha adalah betul. Jika kod pengesahan diluluskan, logik log masuk dilaksanakan jika tidak, mesej ralat dikembalikan. 🎜🎜3. Paparkan kod pengesahan dalam paparan 🎜🎜Untuk memaparkan kod pengesahan pada halaman log masuk, kami perlu melakukan operasi yang sepadan dalam fail paparan yang sepadan. Dengan mengandaikan bahawa fail paparan log masuk kami ialah login.html
, anda boleh menambah kod berikut pada fail: 🎜rrreee🎜Dalam kod di atas, kami mula-mula menambah kotak input untuk menerima kod pengesahan yang dimasukkan oleh pengguna. Kemudian, paparkan imej kod pengesahan melalui teg img
, di mana {{ captcha_img }}
menggunakan sintaks enjin templat untuk output. 🎜🎜Melalui langkah di atas, kami berjaya melaksanakan penjanaan kod pengesahan dan operasi pengesahan dalam rangka kerja ThinkPHP6. Sebagai langkah keselamatan biasa, kod pengesahan boleh menghalang serangan berniat jahat dengan baik. Saya harap artikel ini dapat membantu anda memahami dan menggunakan fungsi kod pengesahan ThinkPHP6. 🎜Atas ialah kandungan terperinci Penjanaan dan pengesahan kod pengesahan ThinkPHP6: melindungi keselamatan aplikasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!