CakePHP ialah rangka kerja pembangunan PHP yang popular yang menyediakan banyak ciri berkuasa yang membolehkan pembangun membina aplikasi web yang boleh dipercayai dengan cepat. Salah satu ciri ini ialah penapis.
Penapis ialah teknik yang digunakan untuk memeriksa, mengubah atau menapis data permintaan masuk. Dalam CakePHP, penapis boleh digunakan pada kaedah pengawal atau operasi model, dengan itu memastikan keselamatan dan ketepatan aplikasi. Dalam artikel ini, kami akan membincangkan cara membuat penapis tersuai dalam CakePHP.
Langkah Pertama: Cipta Penapis Tersuai
Untuk mencipta penapis tersuai kita perlu mencipta fail yang dipanggil CustomFilter.php dan letakkannya di bawah folder lib . Kemudian, tambahkan kod berikut:
App::uses('Sanitize', 'Utility'); class CustomFilter { public function url($string) { return Sanitize::clean($string, array('encode' => false, 'remove_html' => true)); } public function email($string) { return Sanitize::clean($string, array('encode' => false, 'remove_html' => true)); } }
Kod di atas mencipta kelas bernama CustomFilter, yang mengandungi dua fungsi url() dan e-mel(), yang digunakan untuk menapis data permintaan URL dan E-mel. Kelas Sanitize yang disertakan dengan CakePHP digunakan di sini, yang menyediakan satu siri fungsi yang boleh digunakan untuk penapisan data.
Dalam kod ini, kami menggunakan kaedah Sanitize::clean(), yang menerima dua parameter: rentetan yang perlu ditapis dan pilihan penapis. Gunakan pilihan "encode" untuk mengekod data ke dalam entiti HTML, manakala menggunakan pilihan "remove_html" akan mengalih keluar tag HTML daripada rentetan.
Langkah 2: Tambahkan penapis tersuai pada CakePHP
Untuk memberitahu CakePHP bahawa kami telah mencipta penapis tersuai, kami perlu menambah kod berikut pada app/Config/bootstrap.php Dalam fail:
App::uses('CustomFilter', 'Lib'); CakeEventManager::instance()->attach(new CustomFilter());
Barisan pertama kod memperkenalkan kelas CustomFilter yang baru kami buat, manakala baris kedua menambah contoh CustomFilter pada pengurus acara CakePHP.
Langkah 3: Gunakan penapis tersuai dalam Pengawal
Kini, kita boleh menggunakan penapis yang baru kita buat dalam Pengawal. Katakan kita mempunyai kelas UserController dan terdapat kaedah yang dipanggil register() dalam kelas seperti yang ditunjukkan di bawah:
class UserController extends AppController { public function register() { $email = $this->request->data['User']['email']; // 对email进行过滤 $email = $this->CustomFilter->email($email); // 保存用户 $this->User->save($this->request->data); } }
Dalam contoh ini, kita mula-mula mendapat nilai e-mel daripada data permintaan dan menambahnya Diluluskan ke e-mel () kaedah kelas CustomFilter untuk penapisan. Kami kemudian menggunakan model Pengguna untuk menyimpan data permintaan ke pangkalan data.
Langkah 4: Gunakan penapis tersuai dalam Model
Kami juga boleh menggunakan penapis tersuai dalam Model. Katakan kita mempunyai model Pengguna dengan kaedah yang dipanggil register() seperti yang ditunjukkan di bawah:
class User extends AppModel { public $validate = array( 'email' => array( 'rule' => 'email', 'message' => 'Invalid email address' ) ); public function beforeSave($options = array()) { $this->data['User']['email'] = $this->CustomFilter->email($this->data['User']['email']); return true; } }
Dalam contoh ini, kita mula-mula menyemak sama ada alamat e-mel masuk adalah sah menggunakan peraturan pengesahan $email. Kemudian, dalam kaedah beforeSave(), kami menggunakan kaedah e-mel() kelas CustomFilter untuk menapis alamat e-mel.
Ringkasan
Membuat penapis tersuai dalam CakePHP adalah sangat mudah. Dengan mencipta kelas CustomFilter dan menambahkannya pada pengurus acara, kami boleh menapis data permintaan yang diluluskan dalam kaedah pengawal dan operasi model. Ini meningkatkan keselamatan dan kebolehpercayaan aplikasi serta menjadikan pembangunan web lebih mudah.
Atas ialah kandungan terperinci Bagaimana untuk membuat penapis tersuai dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!