Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan pengesahan borang dalam CakePHP?

Bagaimana untuk menggunakan pengesahan borang dalam CakePHP?

WBOY
WBOYasal
2023-06-04 17:40:341200semak imbas

CakePHP ialah rangka kerja aplikasi web PHP yang popular. Ia menyediakan banyak alat dan fungsi yang berkuasa untuk memudahkan proses pembangunan web. Pengesahan borang adalah langkah yang perlu semasa membangunkan borang. Artikel ini akan memperkenalkan cara menggunakan pengesahan borang dalam CakePHP.

Pengesahan borang CakePHP ialah sistem pengesahan yang berkuasa yang boleh membantu kami menghalang pengguna berniat jahat daripada menyerahkan data berniat jahat, dengan itu melindungi aplikasi kami. Ia membolehkan kami mentakrifkan satu set peraturan pengesahan dan menyemak sama ada data borang mematuhi peraturan ini. Jika data yang diserahkan tidak sah, CakePHP akan memberikan mesej ralat yang sesuai.

Pertama, kita perlu mencipta model pengguna. Kita boleh mencipta model ini menggunakan arahan yang disediakan oleh CakePHP:

$ bin/cake bake model User

Ini akan mencipta model bernama "Pengguna" dalam aplikasi kami dan mencipta jadual yang sepadan dalam pangkalan data.

Seterusnya, kita perlu mentakrifkan satu set peraturan pengesahan dalam model ini. Kami boleh menentukan peraturan ini menggunakan kaedah "validationDefault" dalam model Pengguna. Kaedah ini harus mengembalikan tatasusunan yang mengandungi set sifat dan peraturan pengesahan yang sepadan.

// src/Model/Entity/User.php

namespace AppModelEntity;

use CakeORMEntity;

class User extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false,
    ];

    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher)->hash($password);
    }

    protected function _getFullName()
    {
        return $this->_properties['first_name'] . ' ' . $this->_properties['last_name'];
    }

    protected function _getAge()
    {
        $now = new DateTime();
        $birthDate = new DateTime($this->_properties['birth_date']);

        return $now->diff($birthDate)->y;
    }

    protected function _setAge($age)
    {
        $this->_properties['birth_date'] = (new DateTime("-$age years"))->format('Y-m-d');

        return $age;
    }

    protected function _validationDefault(Validator $validator)
    {
        $validator
            ->notEmpty('username', 'A username is required')
            ->notEmpty('password', 'A password is required')
            ->add('password', [
                'length' => [
                    'rule' => ['minLength', 8],
                    'message' => 'Password must be at least 8 characters long',
                ]
            ])
            ->notEmpty('first_name', 'A first name is required')
            ->notEmpty('last_name', 'A last name is required')
            ->add('email', 'valid-email', [
                'rule' => 'email',
                'message' => 'Please enter a valid email address'
            ]);

        return $validator;
    }
}

Dalam kod di atas, kami mentakrifkan peraturan pengesahan: nama pengguna dan kata laluan tidak boleh kosong, kata laluan mesti mengandungi sekurang-kurangnya 8 aksara, nama pertama dan nama keluarga tidak boleh kosong, e-mel mesti sah. Apabila data borang tidak mematuhi peraturan ini, CakePHP akan memberikan mesej ralat yang sesuai.

Sekarang kita perlu mencipta borang dalam paparan dan menyambungkannya kepada model pengguna yang baru kita buat. Kita boleh menggunakan FormHelper yang disediakan oleh CakePHP untuk membuat borang. Pembantu ini menyediakan satu set fungsi tambahan yang boleh membantu kami mencipta elemen bentuk dengan cepat. Pertama, kita perlu memasukkan FormHelper dalam fail paparan:

// src/Template/Users/add.ctp

<?= $this->Form->create($user) ?>
<?= $this->Form->input('username') ?>
<?= $this->Form->input('password') ?>
<?= $this->Form->input('first_name') ?>
<?= $this->Form->input('last_name') ?>
<?= $this->Form->input('email') ?>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

Dalam kod di atas, kami menggunakan kaedah $this->Form->create($user) untuk mencipta borang dan menambahnya Sambungkan kepada model yang diwakili oleh pembolehubah $user. Kami kemudian menggunakan beberapa kaedah $this->Form->input() untuk mencipta elemen borang seperti kotak input dan senarai lungsur turun. Akhir sekali, kami mencipta butang hantar menggunakan kaedah $this->Borang->button().

Kini apabila pengguna menyerahkan borang, kita boleh menggunakan model $user dalam pengawal untuk mengesahkan data. Kita boleh menghantar data borang kepada kaedah validate() model dan semak sama ada nilai pulangan ialah tatasusunan kosong. Jika tatasusunan yang dikembalikan tidak kosong, ini bermakna data borang tidak mematuhi peraturan pengesahan yang baru kami takrifkan. Kita boleh menggunakan tatasusunan ini untuk memaparkan mesej ralat dan ubah hala semula ke halaman borang.

// src/Controller/UsersController.php

namespace AppController;

use CakeORMTableRegistry;

class UsersController extends AppController
{
    public function add()
    {
        $user = $this->Users->newEntity();

        if ($this->request->is('post')) {
            $user = $this->Users->patchEntity($user, $this->request->getData());

            if ($this->Users->save($user)) {
                $this->Flash->success(__('The user has been saved.'));

                return $this->redirect(['action' => 'index']);
            }

            $this->Flash->error(__('Unable to add the user.'));
        }

        $this->set('user', $user);
    }
}

Dalam kod di atas, kami mencipta entiti $newUser dan menghantar data borang kepada kaedah $this->Users->patchEntity(). Kami kemudian cuba menyimpan entiti ke pangkalan data menggunakan kaedah $this->Users->save(). Jika entiti berjaya disimpan, kami menggunakan kaedah $this->Flash->success() untuk memaparkan mesej kejayaan dan mengubah hala pengguna ke halaman senarai pengguna. Jika tidak, kami menggunakan kaedah $this->Flash->error() untuk memaparkan mesej ralat dan mengubah hala pengguna kembali ke halaman borang.

Secara amnya, sistem pengesahan borang CakePHP ialah sistem yang sangat berkuasa dan fleksibel. Ia membolehkan kami mentakrifkan satu set peraturan pengesahan dan melaksanakan pengesahan pada data borang. Apabila data borang tidak mematuhi peraturan ini, CakePHP akan memberikan mesej ralat yang sesuai. Dengan menggunakan pengesahan borang CakePHP, kami boleh memastikan bahawa aplikasi kami mempunyai data yang betul dan selamat.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan pengesahan borang dalam CakePHP?. 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