Rumah  >  Artikel  >  rangka kerja php  >  Pengesahan borang dalam rangka kerja Yii: memastikan data input adalah betul

Pengesahan borang dalam rangka kerja Yii: memastikan data input adalah betul

WBOY
WBOYasal
2023-06-21 08:16:091631semak imbas

Rangka kerja Yii ialah rangka kerja pembangunan aplikasi web yang cekap dan fleksibel. Dalam rangka kerja Yii, pengesahan borang adalah bahagian penting untuk memastikan data yang dimasukkan oleh pengguna adalah betul. Artikel ini akan memperkenalkan pengesahan borang dan teknologi berkaitan dalam rangka kerja Yii.

1. Gambaran keseluruhan pengesahan borang

Pengesahan borang merujuk kepada pengesahan data input sebelum menyerahkannya untuk memastikan data mematuhi format dan keperluan yang ditetapkan. Dalam rangka kerja Yii, pengesahan borang boleh dilaksanakan melalui model Model adalah pembawa pemindahan data antara pengawal dan pandangan Model mentakrifkan medan data yang perlu disahkan dalam borang dan peraturan pengesahannya. Pengesahan borang boleh menghalang pengguna daripada memasukkan data haram dan melindungi aplikasi daripada serangan berniat jahat.

2. Operasi khusus pengesahan borang

Dalam rangka kerja Yii, pengesahan borang termasuk langkah berikut:

  1. Tentukan model

Dalam rangka kerja Yii, model ialah kelas dan perlu mewarisi kelas yii aseModel. Medan yang perlu disahkan dan peraturan pengesahannya perlu ditakrifkan dalam kelas model. Contohnya, kod berikut mentakrifkan kelas model bernama LoginForm, yang perlu mengesahkan nama pengguna dan kata laluan:

class LoginForm extends yiiaseModel
{
    public $username;
    public $password;

    public function rules()
    {
        return [
            [['username', 'password'], 'required'],
            ['password', 'validatePassword'],
        ];
    }

    public function validatePassword($attribute, $params)
    {
        $user = User::findByUsername($this->username);
        if (!$user || !$user->validatePassword($this->password)) {
            $this->addError($attribute, '用户名或密码不正确');
        }
    }
}

Dalam kod di atas, kaedah rules() digunakan untuk mentakrifkan peraturan pengesahan dan ia mengembalikan tatasusunan , setiap elemen mewakili peraturan. Contohnya, ['username', 'required'] menunjukkan bahawa medan nama pengguna mesti diisi dan ['password', 'validatePassword'] menunjukkan bahawa kaedah validatePassword() mesti dipanggil untuk pengesahan. Dalam kaedah validatePassword(), $attribute mewakili nama atribut yang akan disahkan dan $params ialah parameter pilihan yang mewakili data lain untuk dihantar ke kaedah pengesahan.

  1. Buat borang

Selepas menentukan model, anda perlu mencipta borang dalam paparan dan mengikat model pada borang. Dalam rangka kerja Yii, borang boleh dibuat menggunakan kelas yiiwidgetsActiveForm. Sebagai contoh, kod berikut mentakrifkan borang yang mengandungi dua kotak input:

<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'username') ?>

<?= $form->field($model, 'password')->passwordInput() ?>

<div class="form-group">
    <?= Html::submitButton('登录', ['class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

Dalam kod di atas, $model mewakili model yang akan diikat, $form->field($model, 'username') digunakan untuk mencipta kotak input nama pengguna dan Bind ia ke medan nama pengguna dalam model. Begitu juga, $form->field($model, 'password')->passwordInput() digunakan untuk mencipta kotak input kata laluan dan mengikatnya pada medan kata laluan dalam model.

  1. Lakukan pengesahan borang

Sebelum menyerahkan data borang, pengesahan borang diperlukan. Dalam rangka kerja Yii, anda boleh menggunakan kaedah $model->validate() untuk pengesahan. Contohnya, kod berikut mengesahkan data borang sebelum menyerahkannya:

$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // 验证通过,处理表单数据
}

Dalam kod di atas, $model->load(Yii::$app->request->post()) digunakan untuk memuatkan data borang ke dalam model dan $model->validate() digunakan untuk mengesahkan sama ada data borang mematuhi peraturan yang ditetapkan model. Jika pengesahan lulus, anda boleh terus memproses data borang jika tidak, anda perlu kembali ke halaman borang dan memaparkan mesej ralat pengesahan.

  1. Tunjukkan mesej ralat

Apabila pengesahan borang gagal, mesej ralat yang sepadan perlu dipaparkan dalam paparan. Dalam rangka kerja Yii, semua mesej ralat boleh dipaparkan menggunakan kaedah $form->errorSummary($model). Contohnya, kod berikut memaparkan semua mesej ralat pengesahan di bahagian atas borang:

<?php $form = ActiveForm::begin(); ?>

<?= $form->errorSummary($model) ?>

<?= $form->field($model, 'username') ?>

<?= $form->field($model, 'password')->passwordInput() ?>

<div class="form-group">
    <?= Html::submitButton('登录', ['class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

Dalam kod di atas, $form->errorSummary($model) digunakan untuk memaparkan semua mesej ralat pengesahan.

3. Langkah berjaga-jaga untuk pengesahan borang

Apabila menggunakan rangka kerja Yii untuk pengesahan borang, anda perlu memberi perhatian kepada perkara berikut:

  1. Takrif pengesahan peraturan perlu mengikut Spesifikasi tertentu, seperti format tatasusunan mesti digunakan, nama medan mesti konsisten dengan nama atribut dalam model, dsb.
  2. Apabila melakukan pengesahan borang, anda perlu menggunakan kaedah $model->validate() untuk pengesahan Apabila pengesahan gagal, mesej ralat akan disimpan secara automatik dalam model.
  3. Dalam paparan, anda boleh menggunakan kaedah $form->errorSummary($model) untuk memaparkan semua mesej ralat pengesahan.
  4. Apabila melakukan pengesahan borang, anda boleh menggunakan kaedah validateAttribute() dalam model untuk mengesahkan satu medan, atau gunakan kaedah beforeValidate() dan afterValidate() dalam model untuk melaksanakan operasi lain sebelum dan selepas pengesahan .

Ringkasnya, pengesahan borang ialah fungsi yang sangat penting dalam rangka kerja Yii dan merupakan kunci untuk memastikan keselamatan dan pengendalian aplikasi web yang stabil. Apabila menggunakan rangka kerja Yii untuk membangunkan aplikasi web, anda perlu menggunakan sepenuhnya teknologi pengesahan borang untuk memastikan bahawa input data oleh pengguna berada dalam format yang betul, selamat dan boleh dipercayai.

Atas ialah kandungan terperinci Pengesahan borang dalam rangka kerja Yii: memastikan data input adalah betul. 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