Rumah  >  Artikel  >  rangka kerja php  >  Memahami pengesahan data dalam ThinkPHP6

Memahami pengesahan data dalam ThinkPHP6

WBOY
WBOYasal
2023-06-20 22:45:081746semak imbas

ThinkPHP6 ialah salah satu rangka kerja pembangunan PHP yang paling popular pada masa ini, dan ramai pembangun PHP suka menggunakannya untuk pembangunan. Semasa proses pembangunan, pengesahan data adalah bahagian yang sangat penting, kerana aplikasi yang sangat baik mesti mempunyai pengesahan kesahihan data input pengguna. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara melaksanakan pengesahan data dalam ThinkPHP6.

  1. Idea asas

Pengesahan data ThinkPHP6 adalah berdasarkan konsep validator iaitu kita perlu mencipta objek validator untuk mengesahkan data. Apabila mencipta objek pengesah, kita perlu menentukan peraturan pengesahan untuknya dan kemudian memanggil kaedah pengesahan untuk pengesahan. Jika pengesahan gagal, maklumat ralat pengesahan dikembalikan, jika tidak benar dikembalikan. Berikut ialah contoh mudah:

use thinkValidate;

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
    'age'   => 18
];

$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email',
    'age'   => 'number|between:1,120',
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}

Dalam kod di atas, kami mula-mula menentukan tatasusunan $data, yang mengandungi data yang perlu disahkan. Kemudian kami mencipta objek validator $validate dan menetapkan tiga peraturan pengesahan untuknya, iaitu: medan nama tidak boleh kosong dan boleh sehingga 25 aksara medan e-mel mestilah alamat e-mel yang sah; Antara 1 dan 120. Akhirnya, kaedah semakan dipanggil untuk mengesahkan data. Jika pengesahan gagal, mesej ralat akan dikeluarkan.

  1. Penjelasan terperinci tentang peraturan pengesahan

Dalam contoh di atas, kami menggunakan beberapa peraturan pengesahan biasa, seperti: memerlukan, maks, e-mel, nombor, antara, dsb. Di bawah ini kami akan memperkenalkan beberapa peraturan pengesahan yang biasa digunakan dan penggunaannya.

  1. memerlukan

Peraturan ini digunakan untuk menyatakan bahawa medan tidak boleh kosong. Penggunaannya adalah seperti berikut:

'username' => 'require'
  1. maks, min

Peraturan ini digunakan untuk mengehadkan panjang maksimum atau minimum medan. Penggunaannya adalah seperti berikut:

'username' => 'max:25'
'password' => 'min:8'
  1. e-mel

Peraturan ini digunakan untuk menyatakan bahawa medan mestilah alamat e-mel yang sah. Penggunaannya adalah seperti berikut:

'email' => 'email'
  1. alpha,alphaNum

Peraturan ini digunakan untuk menyatakan bahawa medan hanya boleh berupa huruf atau gabungan abjad angka. Penggunaannya adalah seperti berikut:

'username' => 'alpha'
'password' => 'alphaNum'
  1. regex

Peraturan ini digunakan untuk menentukan bahawa medan mesti sepadan dengan ungkapan biasa yang ditentukan. Penggunaannya adalah seperti berikut:

'username' => 'regex:^[a-z]+$'
  1. unik

Peraturan ini digunakan untuk menentukan bahawa nilai medan mestilah unik dalam pangkalan data. Penggunaannya adalah seperti berikut:

'email' => 'unique:user,email'

Dalam contoh di atas, parameter selepas unik menyatakan bahawa dalam jadual pengguna, nilai medan e-mel mestilah unik.

  1. dalam

Peraturan ini digunakan untuk menentukan bahawa nilai medan mestilah dalam julat yang ditentukan. Penggunaannya adalah seperti berikut:

'gender' => 'in:0,1'
  1. antara

Peraturan ini digunakan untuk menentukan bahawa nilai medan mestilah dalam julat yang ditentukan. Penggunaan adalah seperti berikut:

'age' => 'between:1,120'
  1. sahkan

Peraturan ini digunakan untuk menentukan bahawa dua medan mestilah sama. Penggunaannya adalah seperti berikut:

'password_confirm' => 'confirm:password'

Dalam contoh di atas, kami memerlukan kedua-dua medan password_confirm dan kata laluan mestilah sama.

  1. Peraturan pengesahan tersuai

Kadangkala kita perlu menggunakan beberapa peraturan pengesahan tersuai untuk memenuhi keperluan khusus Dalam kes ini, kita boleh menggunakan kaedah addRule untuk menyesuaikan peraturan pengesahan . Sebagai contoh, jika kami ingin mengesahkan bahawa kandungan kotak teks mesti mengandungi kata kunci yang ditentukan, kami boleh mentakrifkan peraturan seperti ini:

use thinkValidate;

Validate::rule('my_rule', function($value, $rule) {
    return strpos($value, $rule) !== false;
});

$validate = new Validate([
    'content' => 'my_rule:thinkphp'
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}

Dalam kod di atas, kami mula-mula mendaftar peraturan tersuai my_rule melalui kaedah kaedah statik, penggunaannya adalah sama seperti peraturan lain. Kami kemudian menggunakan peraturan ini dalam pengesah untuk mengesahkan bahawa nilai medan kandungan mesti mengandungi kata kunci thinkphp.

  1. Pengesahan senario

Kadangkala kami perlu menggunakan peraturan pengesahan yang berbeza untuk medan yang sama dalam senario yang berbeza Contohnya, kami menggunakan peraturan pengesahan yang berbeza untuk pendaftaran pengguna dan pengubahsuaian pengguna . Dalam setiap senario, peraturan pengesahan yang berbeza perlu digunakan pada medan e-mel. Pada masa ini kita boleh menggunakan pengesahan senario untuk memenuhi keperluan. Kita boleh menentukan nama senario apabila mencipta objek pengesah, dan kemudian menetapkan peraturan pengesahan yang berbeza untuk setiap senario. Contohnya:

use thinkValidate;

$data = [
    'email' => 'thinkphp@qq.com',
    'password' => '123456',
];

$validate = new Validate([
    'email' => 'require|email|unique:user,email',
    'password' => 'require|min:6'
]);

// 假设当前为用户修改资料场景
$validate->scene('edit', function($validate) {
    $validate->rule('email', 'require|email');
});

if (!$validate->scene('edit')->check($data)) {
    dump($validate->getError());
}

Dalam contoh di atas, kami mula-mula mentakrifkan objek pengesah $validate dan menetapkan peraturan pengesahan untuk medan e-mel dan kata laluan. Kemudian, kami menggunakan kaedah pemandangan untuk menentukan pemandangan semasa sebagai pengeditan dan menentukan peraturan pengesahan untuk medan e-mel. Akhir sekali, kami memanggil kaedah semakan untuk mengesahkan. Jika pengesahan gagal, mesej ralat akan dikeluarkan.

  1. Sokongan berbilang bahasa

ThinkPHP6 menyokong mesej ralat pengesahan berbilang bahasa Kita boleh mencapai ini dengan menambahkan mesej ralat yang sepadan dalam fail validate.php. Sebagai contoh, jika kami ingin menambah maklumat ralat bahasa Cina pada medan e-mel, kami boleh mengkonfigurasinya seperti ini:

return [
    'email' => [
        'require' => '邮箱必须填写!',
        'unique'  => '该邮箱已被注册!',
        'email'   => '邮箱格式不正确!'
    ]
];

Fail konfigurasi ini disimpan dalam /config/validate.php, dan kami boleh mendapatkan ralat yang sepadan maklumat melalui kaedah getError semasa pengesahan.

  1. Tamat

Di atas ialah penggunaan asas pengesahan data dalam ThinkPHP6, termasuk: peraturan pengesahan, peraturan pengesahan tersuai, pengesahan senario dan sokongan berbilang bahasa. Menggunakan fungsi ini boleh membantu kami mengesahkan data input pengguna dengan lebih mudah dan memastikan keselamatan dan kesahihan aplikasi. Saya harap artikel ini akan membantu semua pembangun!

Atas ialah kandungan terperinci Memahami pengesahan data dalam ThinkPHP6. 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