Rumah >rangka kerja php >ThinkPHP >Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di ThinkPhp?
ThinkPhp menawarkan sistem pengesahan fleksibel yang membolehkan anda menentukan peraturan pengesahan tersuai di luar pilihan terbina dalam. Ini dicapai terutamanya melalui kelas Validate
dan kaedah yang berkaitan. Anda boleh membuat peraturan pengesahan tersuai dengan memperluaskan kelas Think \ Validate atau dengan menentukan peraturan pengesahan dalam model atau pengawal anda.
Mari kita menggambarkan dengan contoh. Katakan kami memerlukan peraturan untuk mengesahkan alamat e -mel terhadap domain tertentu, katakan example.com
. Kita boleh membuat peraturan pengesahan tersuai seperti ini:
<code class="php"> & lt ;? php namespace app \ validate; Gunakan berfikir \ validate; Kelas Uservalidate memanjangkan Validate {dilindungi $ peraturan = ['email' = & gt; 'Memerlukan | e -mel | domain: example.com',]; dilindungi $ message = ['email' = & gt; ['memerlukan' = & gt; 'E -mel diperlukan', 'e -mel' = & gt; 'Format e -mel tidak sah', 'domain: example.com' = & gt; 'E -mel mestilah dari example.com',],]; domain fungsi yang dilindungi ($ nilai, $ peraturan, $ data = []) {return strpos ($ nilai, '@example.com')! == false; }} </code>
Dalam contoh ini, kami menentukan peraturan domain
dalam kelas uservalidate
. Kaedah domain memeriksa jika alamat e -mel mengandungi @example.com
. Peraturan tersuai ini kemudiannya digunakan dalam array aturan bersama-sama dengan peraturan dan e-mel ThinkPHP. Arahan
menyediakan mesej ralat tersuai untuk setiap peraturan. Untuk menggunakan pengesahan ini, anda hanya akan memberi instantiasi kelas uservalidate
dan jalankan check
method.
<code class="php"> $ validate = new \ app \ validate \ uservalidate (); jika ($ validate- & gt; check (['email' = & gt; 'test@example.com'])) {// pengesahan lulus} else {// validation gagal; $ validate- & gt; getError () akan mengembalikan mesej ralat. } </code>
Mengekalkan kod yang bersih dan boleh diguna semula adalah penting untuk kejayaan projek jangka panjang. Berikut adalah beberapa amalan terbaik untuk melaksanakan peraturan pengesahan tersuai dalam ThinkPhp:
validate_user
, gunakan uservalidate
.
dari kelas Validate
anda. ThinkPHP akan melaksanakan kedua-dua peraturan adat dan terbina dalam dalam perintah yang ditentukan. Ini membolehkan pendekatan pengesahan yang fleksibel dan berkuasa. 'Memerlukan | e -mel | domain: example.com | unik: pengguna',]; anda untuk memperluaskan peraturan yang sedia ada untuk membuat pengesahan tersuai yang lebih kompleks. Ini dilakukan dengan mengatasi atau memperluaskan kaedah pengesahan sedia ada dalam kelas validate
adat anda. Ini menyediakan mekanisme yang kuat untuk menyesuaikan keupayaan pengesahan ThinkPHP kepada keperluan khusus anda. Anda boleh membuat kaedah tersuai:
<code class="php"> fungsi lengthWithChars yang dilindungi ($ nilai, $ peraturan, $ data = []) {list ($ min, $ max, $ chars) = explode (',', $ peraturan); $ len = mb_strlen ($ nilai); jika ($ len & lt; $ min || $ len & gt; $ max) kembali false; foreach (str_split ($ chars) sebagai $ char) {if (strpos ($ nilai, $ char) === false) kembali palsu; } kembali benar; } </code>
maka anda boleh menggunakannya dalam array array anda:
<code class="php"> dilindungi $ peraturan = ['password' = & gt; 'LengthWithChars: 8,20, a, a, 1', // kata laluan mestilah 8-20 aksara panjang dan mengandungi sekurang-kurangnya satu huruf besar A, satu huruf kecil A, dan satu digit 1.]; Ingatlah untuk sentiasa mengendalikan kesilapan yang berpotensi dengan anggun dan memberikan maklum balas yang bermaklumat kepada pengguna. </code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di ThinkPhp?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!