Rumah > rangka kerja php > ThinkPHP > Terokai cara melaksanakan pengesahan parameter permintaan dalam ThinkPHP

Terokai cara melaksanakan pengesahan parameter permintaan dalam ThinkPHP

PHPz
Lepaskan: 2023-04-11 15:39:51
asal
904 orang telah melayarinya

ThinkPHP ialah rangka kerja pembangunan PHP yang biasa digunakan, yang boleh digunakan untuk membina aplikasi web yang berkuasa dengan cepat. Dalam proses pembangunan, pengesahan parameter adalah bahagian yang sangat penting, yang boleh menghalang serangan berniat jahat secara berkesan dan meningkatkan pengalaman pengguna. Dalam artikel ini, kami akan meneroka cara melakukan pengesahan parameter permintaan dalam ThinkPHP.

  1. Parameter permintaan dalam ThinkPHP

Dalam ThinkPHP, terdapat dua jenis parameter permintaan: GET dan POST. Parameter GET dihantar dalam URL, manakala parameter POST dihantar dalam badan permintaan. Dalam pengawal, kita boleh terus mendapatkan parameter melalui kod berikut:

$name = $this->request->param('name');
Salin selepas log masuk

di mana nama mewakili nama parameter. Kaedah $this->request->param() di sini akan mendapatkan parameter secara automatik berdasarkan kaedah permintaan (GET atau POST).

  1. Cara mengesahkan parameter permintaan

Dalam pemprosesan data, pengesahan data merupakan pautan yang sangat diperlukan. Oleh itu, ThinkPHP memberikan kami mekanisme pengesahan parameter yang sangat mudah. Dalam ThinkPHP, pengesahan parameter bergantung pada pengesah. Pengesah ialah kelas bebas yang bertanggungjawab untuk mengesahkan sama ada data itu sah.

Mari kita lihat contoh khusus di bawah Katakan kita perlu mengesahkan sama ada parameter permintaan POST memenuhi keperluan:

class UserController extends Controller {
    public function register() {
        $validate = new \think\Validate([
            'username' => 'require|max:25',
            'email' => 'require|email',
            'password' => 'require|min:6',
        ]);

        $data = $this->request->param();
        if (!$validate->check($data)) {
            // 参数验证失败
            echo $validate->getError();
        } else {
            // 参数验证成功,进行下一步操作
        }
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami menentukan pengesah, Dan. nyatakan parameter yang perlu disahkan dan peraturan pengesahan. Selepas menerima permintaan, kami mula-mula mendapatkan parameter dan menyerahkannya kepada kaedah semakan pengesah. Jika pengesahan gagal, kami boleh mendapatkan maklumat ralat melalui kaedah getError(). Jika tidak, kita boleh meneruskan ke langkah seterusnya.

  1. Permintaan peraturan pengesahan parameter

Dalam contoh di atas, kami menggunakan beberapa peraturan pengesahan biasa, seperti memerlukan, maks dan min. Peraturan ini merangkumi kebanyakan keperluan pengesahan. Di bawah ini kami akan memperkenalkan beberapa peraturan pengesahan yang lebih biasa digunakan.

  • memerlukan: parameter yang diperlukan, tidak boleh kosong
  • e-mel: format e-mel
  • url: format URL
  • panjang: julat panjang
  • nombor: mesti nombor
  • alfa: mesti huruf
  • regex: ungkapan biasa

Apabila menggunakan peraturan ini, anda boleh menggabungkan berbilang peraturan . Contohnya:

class UserController extends Controller {
    public function login() {
        $validate = new \think\Validate([
            'username' => 'require|length:6,20',
            'password' => 'require|min:6|alphaNum',
        ]);

        $data = $this->request->param();
        if (!$validate->check($data)) {
            // 参数验证失败
            echo $validate->getError();
        } else {
            // 参数验证成功,进行下一步操作
        }
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan tiga peraturan: panjang, min dan alphaNum untuk mengesahkan nama pengguna dan kata laluan.

  1. Peraturan pengesahan tersuai

Dalam sesetengah kes, kami mungkin perlu menyesuaikan beberapa peraturan pengesahan. Dalam ThinkPHP, kita boleh menggunakan kaedah lanjutan untuk melaksanakan peraturan tersuai. Sebagai contoh, kami ingin mengesahkan sama ada parameter ialah nombor telefon mudah alih Cina:

class MyValidate extends \think\Validate {
    protected $rule = [
        'mobile' => 'isMobile'
    ];

    protected $message = [
        'mobile.isMobile' => '手机号格式不正确'
    ];

    protected function isMobile($value) {
        $pattern = "/^1[3-9]\d{9}$/";
        return preg_match($pattern, $value);
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami menentukan kelas MyValidate yang mewarisi thinkValidate. Kemudian kami menentukan peraturan pengesahan untuk parameter mudah alih dalam pembina kelas. Dalam kaedah isMobile, kami mengesahkan format nombor telefon mudah alih. Akhir sekali, kami mentakrifkan mesej ralat melalui atribut $message.

Apabila menggunakan peraturan pengesahan tersuai, kami hanya perlu membuat seketika pengesah tersuai dalam pengawal. Contohnya:

class UserController extends Controller {
    public function register() {
        $validate = new MyValidate();

        $data = $this->request->param();
        if (!$validate->check($data)) {
            // 参数验证失败
            echo $validate->getError();
        } else {
            // 参数验证成功,进行下一步操作
        }
    }
}
Salin selepas log masuk
  1. Ringkasan

Pengesahan parameter ialah bahagian penting dalam pembangunan aplikasi web. Dalam ThinkPHP, kami boleh menggunakan pengesah untuk mengesahkan parameter permintaan. Dalam artikel ini, kami memperkenalkan beberapa peraturan pengesahan biasa dan menunjukkan cara untuk menyesuaikan peraturan. Semasa proses pembangunan, kami boleh menggunakan teknik ini secara fleksibel untuk mencapai aplikasi yang lebih selamat dan cekap.

Atas ialah kandungan terperinci Terokai cara melaksanakan pengesahan parameter permintaan dalam ThinkPHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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