Rumah > rangka kerja php > ThinkPHP > Penjanaan dan pengesahan kod pengesahan ThinkPHP6: melindungi keselamatan aplikasi

Penjanaan dan pengesahan kod pengesahan ThinkPHP6: melindungi keselamatan aplikasi

PHPz
Lepaskan: 2023-08-13 10:13:45
asal
1934 orang telah melayarinya

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"
}
Salin selepas log masuk

然后,执行 composer update 命令来安装依赖包。安装完成后,我们可以在控制器或服务层中使用验证码对象来生成验证码。

假设我们在登录页面中需要生成验证码,可以在控制器中进行如下操作:

use thinkcaptchaacadeCaptcha;

class LoginController extends Controller
{
    public function index()
    {
        // 生成验证码
        $captcha = Captcha::create();
        
        // 把验证码保存到session中
        session('captcha', $captcha->getCode());
        
        // 渲染登录页面,将生成的验证码图片和表单一起展示
        return view('login', [
            'captcha_img' => $captcha->getImage(),
        ]);
    }
}
Salin selepas log masuk

在上述代码中,我们首先使用 Captcha 类的 create 方法生成了一个验证码对象,并将验证码保存到了 session 中。然后,将生成的验证码图片和登录表单一起传递给登录页面进行展示。

二、验证验证码

在用户提交登录表单后,我们需要验证用户输入的验证码是否正确。ThinkPHP6框架提供了方便的方法来进行验证码验证。

在登录页面表单提交后,我们可以在控制器中进行如下操作来验证验证码:

use thinkcaptchaacadeCaptcha;

class LoginController extends Controller
{
    public function login()
    {
        // 获取用户输入的验证码
        $inputCode = input('captcha');
        
        // 获取session中保存的验证码
        $sessionCode = session('captcha');
        
        // 进行验证码验证
        if (!captcha_check($inputCode, $sessionCode)) {
            // 验证码错误,返回错误信息
            return '验证码错误!';
        }
        
        // 验证码验证通过,执行登录逻辑
        // ...
    }
}
Salin selepas log masuk

在上述代码中,我们首先通过 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>
Salin selepas log masuk

在上述代码中,我们首先添加了一个输入框来接收用户输入的验证码。然后,通过 img 标签来展示验证码图片,其中 {{ captcha_img }}rrreee

Kemudian, laksanakan perintah 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 input, Kemudian dapatkan kod pengesahan yang dijana sebelum ini melalui fungsi 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan