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

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

WBOY
WBOYasal
2023-06-21 16:35:551564semak imbas

Rangka kerja Yii ialah rangka kerja PHP yang berkuasa tetapi mudah digunakan yang menyediakan pelbagai fungsi dan alatan untuk membantu kami membangunkan aplikasi web. Kadangkala, data yang dimasukkan pengguna mungkin tidak betul atau tidak sah. Untuk memastikan bahawa data yang dimasukkan oleh pengguna adalah betul, rangka kerja Yii menyediakan ciri yang dipanggil pengesahan borang.

Pengesahan borang ialah fungsi yang sangat berguna yang boleh mengesahkan secara automatik sama ada data yang dimasukkan oleh pengguna mematuhi peraturan yang kami tetapkan. Peraturan ini boleh mengandungi medan yang diperlukan, had panjang, pengesahan peraturan dan banyak lagi. Jika data yang dimasukkan oleh pengguna tidak mematuhi peraturan ini, rangka kerja Yii akan memaparkan mesej ralat untuk memberitahu pengguna bahawa data yang mereka masukkan adalah tidak betul.

Dalam rangka kerja Yii, pengesahan borang dilaksanakan dengan menggunakan kelas model. Kelas model ialah kelas yang digunakan untuk mengendalikan data dan peraturan perniagaan Ia boleh menyimpan data, mengesahkan data, berinteraksi dengan data dengan pangkalan data dan banyak lagi. Kita boleh mencipta kelas model mengikut keperluan kita dan menentukan peraturan dalam kelas ini untuk mengesahkan data borang.

Berikut ialah contoh kelas model:

namespace appmodels;

use Yii;
use yiiaseModel;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;
    public $verifyCode;

    public function rules()
    {
        return [
            // name, email, subject and body are required
            [['name', 'email', 'subject', 'body'], 'required'],
            // email has to be a valid email address
            ['email', 'email'],
            // verifyCode needs to be entered correctly
            ['verifyCode', 'captcha'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'name' => 'Name',
            'email' => 'Email',
            'subject' => 'Subject',
            'body' => 'Body',
            'verifyCode' => 'Verification Code',
        ];
    }
}

Dalam kelas model ini, kami mentakrifkan lima atribut: nama, e-mel, subjek, kandungan dan verifyCode. Kami juga mentakrifkan peraturan untuk mengesahkan nilai sifat ini. Peraturan ini menentukan peraturan pengesahan untuk setiap atribut, seperti pengesahan medan yang diperlukan, pengesahan alamat e-mel dan pengesahan captcha.

Kaedah rules() dalam kelas model ini mengembalikan tatasusunan yang mengandungi semua peraturan pengesahan yang kami takrifkan. Dalam contoh ini, kami menggunakan peraturan pengesahan yang disediakan oleh rangka kerja Yii, seperti pengesahan medan yang diperlukan ('diperlukan') dan pengesahan alamat e-mel ('e-mel').

Selain itu, kami juga boleh menggunakan peraturan pengesahan tersuai, yang ditakrifkan melalui fungsi panggil balik dalam kaedah rules(). Sebagai contoh, kita boleh menggunakan kod berikut untuk mentakrifkan peraturan pengesahan tersuai:

['name', 'myRule'],

dengan myRule ialah peraturan pengesahan tersuai yang ditakrifkan dalam kaedah lain dalam kelas model. Contohnya:

public function myRule($attribute, $params)
{
    if ($this->$attribute == 'test') {
        $this->addError($attribute, 'The value cannot be "test".');
    }
}

Dalam peraturan pengesahan tersuai ini, kami menyemak sama ada nilai nama atribut ialah "ujian" dan memaparkan mesej ralat jika ya.

Dalam kelas model, kita juga perlu mentakrifkan label atribut supaya label medan borang dipaparkan dengan betul pada halaman. Ini boleh dicapai menggunakan kaedah attributeLabels(). Contohnya:

public function attributeLabels()
{
    return [
        'name' => 'Name',
        'email' => 'Email Address',
        'subject' => 'Subject',
        'body' => 'Content',
        'verifyCode' => 'Verification Code',
    ];
}

Menggunakan kelas model ini kita boleh melakukan pengesahan borang dengan mudah dalam rangka kerja Yii. Kami hanya perlu menggunakan kod berikut dalam pengawal:

$model = new ContactForm();

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // data is valid, do something
}

Dalam kod ini, kami mula-mula mencipta objek ContactForm baharu. Kami kemudian memuatkan data borang ke dalam model dengan memanggil kaedah load(). Akhir sekali, kami mengesahkan data borang dengan memanggil kaedah validate(). Jika data borang adalah sah, kita boleh menggunakan objek $model untuk memproses data, mis.

Ringkasnya, pengesahan borang dalam rangka kerja Yii ialah fungsi yang sangat berguna, yang boleh mengesahkan secara automatik sama ada data yang dimasukkan oleh pengguna mematuhi peraturan yang kami tetapkan. Untuk melaksanakan pengesahan borang, kita perlu mencipta kelas model dan mentakrifkan peraturan pengesahan dalam kelas ini. Menggunakan peraturan pengesahan ini, kami boleh mengesahkan data borang dengan mudah dalam rangka kerja Yii dan memastikan bahawa input pengguna adalah betul.

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