Rumah  >  Artikel  >  pembangunan bahagian belakang  >  CodeIgniter middleware: memudahkan pengesahan borang dan penapisan data

CodeIgniter middleware: memudahkan pengesahan borang dan penapisan data

WBOY
WBOYasal
2023-07-29 16:42:21882semak imbas

CodeIgniter Middleware: Permudahkan pengesahan borang dan penapisan data

Apabila membangunkan aplikasi web, pengesahan borang dan penapisan data adalah langkah penting. Sebagai rangka kerja PHP yang popular, CodeIgniter menyediakan satu set alat pengesahan fleksibel yang membolehkan pembangun mengendalikan tugas pengesahan borang dan penapisan data dengan mudah. Dengan menggunakan perisian tengah, kami boleh memudahkan lagi dan mengoptimumkan tugasan ini.

Middleware ialah ciri hebat rangka kerja CodeIgniter, yang boleh melaksanakan kod tertentu sebelum atau selepas kaedah pengawal. Ini membolehkan kami mengendalikan tugas biasa dalam perisian tengah tanpa perlu mengulangi pengesahan dan penapisan dalam setiap kaedah pengawal.

Di bawah, kami akan memperkenalkan cara menggunakan perisian tengah untuk memudahkan pengesahan borang dan penapisan data.

Pertama, kita perlu mencipta kelas middleware tersuai. Dalam CodeIgniter, kelas middleware boleh diletakkan dalam direktori aplikasi/Middleware. Kami mencipta fail bernama FormValidationMiddleware.php dan menulis kod berikut:

<?php
// application/Middleware/FormValidationMiddleware.php

namespace AppMiddleware;

use CodeIgniterExceptionsPageNotFoundException;
use ConfigServices;

class FormValidationMiddleware
{
    public function before(RequestInterface $request, $arguments = null)
    {
        $config = config('Validation');

        $validation = Services::validation($config);

        if (!$validation->run($request->getPost())) {
            throw PageNotFoundException::forInvalidRequest();
        }

        // 可以在这里进行数据过滤

        return $request;
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
        return $response;
    }
}

Dalam kod di atas, kami menggunakan kelas Pengesahan CodeIgniter untuk pengesahan borang. Mula-mula, kami memuatkan fail konfigurasi Pengesahan dan mencipta contoh pengesahan berdasarkan fail konfigurasi. Kami kemudian menggunakan contoh pengesahan untuk mengesahkan data permintaan POST. Jika pengesahan gagal, kami boleh memilih untuk membuang PageNotFoundException, menunjukkan bahawa permintaan itu tidak sah. Jika pengesahan lulus, kami boleh menambah kod penapisan data dalam kaedah sebelum.

Seterusnya, kita perlu mendaftar kelas middleware dalam fail config/Events.php. Cari kod berikut:

$events->on('pre_system', function () {
    // Code...
});

Dalam blok kod ini kita boleh mula mendaftar kelas middleware. Kodnya adalah seperti berikut:

$events->on('pre_system', function () {
    // 注册表单验证中间件
    $middlewares = [
        AppMiddlewareFormValidationMiddleware::class,
    ];

    Services::middlewares()
        ->attach($middlewares)
        ->setPriority(0)
        ->setAsGlobal();
});

Dalam kod di atas, kami mencipta tatasusunan $middlewares dan menambahkan kelas middleware FormValidationMiddleware pada tatasusunan. Kemudian, kami menggunakan kelas Perkhidmatan CodeIgniter untuk mendaftarkan perisian tengah. Kami menetapkan keutamaan middleware kepada 0, yang bermaksud bahawa middleware ini akan dilaksanakan sebelum semua middleware lain. Akhir sekali, gunakan kaedah setAsGlobal() untuk menjadikan middleware global supaya ia berkuat kuasa dalam permintaan sepanjang aplikasi.

Kini, kami telah berjaya mencipta kelas perisian tengah dan mendaftarkannya. Di bawah, kami akan menunjukkan cara menggunakan perisian tengah dalam pengawal untuk pengesahan borang dan penapisan data.

Katakan kita mempunyai pengawal yang dipanggil UserController, yang mempunyai kaedah yang dipanggil register() yang mengendalikan penyerahan borang untuk pendaftaran pengguna. Kami menambahkan anotasi middleware @middleware pada kaedah untuk merujuk middleware yang baru kami buat:

<?php
// application/Controllers/UserController.php

namespace AppControllers;

use CodeIgniterController;
use CodeIgniterValidationRules;

class UserController extends Controller
{
    /**
     * @middleware(AppMiddlewareFormValidationMiddleware)
     */
    public function register()
    {
        // 其他处理逻辑...

        // 如果代码执行到这里,说明表单验证和数据过滤已经完成
    }
}

Seperti yang ditunjukkan di atas, dengan menambahkan anotasi @middleware pada kaedah dan menentukan ruang nama lengkap kelas middleware, kami boleh Middleware digunakan untuk kaedah tertentu.

Dalam contoh di atas, kami hanya menggunakan fungsi pengesahan borang, tetapi mengikut keperluan anda sendiri, anda boleh menambah logik penapisan data lain yang diperlukan dalam kaedah sebelum perisian tengah.

Menggunakan perisian tengah untuk pengesahan borang dan penapisan data boleh memudahkan tugas pembangunan. Ia membantu kami mengurangkan pertindihan kod dalam setiap kaedah pengawal, menjadikan kod lebih diperkemas dan boleh dibaca. Pada masa yang sama, perisian tengah juga menyediakan cara yang dipisahkan untuk mengendalikan permintaan, menjadikan aplikasi kami lebih modular dan boleh diselenggara.

Saya harap artikel ini dapat membantu anda lebih memahami dan menggunakan perisian tengah CodeIgniter untuk memudahkan tugas pengesahan borang dan penapisan data.

Atas ialah kandungan terperinci CodeIgniter middleware: memudahkan pengesahan borang dan penapisan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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