Pengenalan Ke Pengesahan Masalah HTML5
Laman web dan aplikasi interaktif tidak boleh dibayangkan tanpa borang yang membolehkan kami berhubung dengan pengguna kami, dan kepada dapatkan data kami perlukan untuk memastikan transaksi lancar dengan mereka. Kita perlukan input pengguna yang sah, namun kita perlu memperolehnya dengan cara itu tidak mengecewakan pengguna kami terlalu banyak.
Walaupun kami boleh meningkatkan kebolehgunaan borang kami dengan corak reka bentuk UX yang bijak, HTML5 juga mempunyai mekanisme asli untuk pengesahan kekangan yang membolehkan kami tangkapkan kesilapan input tepat di bahagian hadapan.
Dalam siaran ini, kami akan memberi tumpuan pengesahan kekangan dibekal pelayar, dan lihat bagaimana pemaju frontend boleh input pengguna sah yang selamat menggunakan HTML5.
Kenapa Kami Perlu Pengesahan Input Front-End
Pengesahan input mempunyai dua matlamat utama. Kandungan yang kami dapat:
1. Berguna
Kita perlu data boleh guna yang boleh kita bekerjasama. Kita perlu membuat orang masuk data realistik dalam format yang betul. Sebagai contoh, tiada siapa yang hidup hari ini dilahirkan 200 tahun lalu. Mendapatkan data seperti ini mungkin kelihatan lucu pada mulanya, tetapi pada jangka panjang ia menjengkelkan, dan memaparkan pangkalan data kami dengan data tidak berguna.
2. Selamat
Apabila merujuk kepada keselamatan, ini bermakna kita perlu mengelakkan suntikan kandungan berniat jahat - sama ada sengaja atau secara tidak sengaja.
Kegunaan (mendapatkan data yang munasabah) dapat dicapai hanya pada sisi pelanggan, pasukan backend tidak boleh membantu terlalu banyak dengan ini. Untuk mencapai keselamatan, pemaju depan dan belakang perlu bekerjasama.
Jika pemaju frontend betul mengesahkan input pada sisi pelanggan, pasukan backend perlu berurusan dengan kurang kerentanan. Hacking (tapak) sering melibatkan mengemukakan data tambahan, atau data dalam format yang salah. Pemaju boleh melawan lubang keselamatan seperti ini, berjaya melawan dari front-end.
Sebagai contoh, panduan keselamatan PHP ini mengesyorkan untuk memeriksa segala yang kami dapat di sisi klien. Mereka menekankan kepentingan pengesahan masukan frontend dengan memberikan banyak contoh, seperti:
"Pengesahan input berfungsi dengan baik dengan nilai yang sangat terhad, contohnya apabila sesuatu harus menjadi integer, atau rentetan alfanumerik, atau URL HTTP."
Dalam pengesahan masukan frontend, tugas kami adalah untuk mengenakan kekangan yang munasabah pada input pengguna. Ciri pengesahan kekangan HTML5 memberi kami cara untuk berbuat demikian.
Pengesahan Masalah HTML5
Sebelum HTML5, pembangun frontend terhad kepada mengesahkan input pengguna dengan JavaScript, yang merupakan proses membebankan dan membazirkan kesilapan. Untuk meningkatkan pengesahan bentuk sisi pelanggan, HTML5 telah memperkenalkan a pengesahan kekangan algoritma yang berjalan di pelayar moden, dan memeriksa kesahihan input yang dikemukakan.
Untuk membuat penilaian, algoritma menggunakan atribut yang berkaitan dengan pengesahan unsur input, seperti ,
, dan
. Jika anda ingin tahu bagaimana pengesahan kekangan berlaku langkah demi langkah dalam penyemak imbas semak dokument WhatWG ini.
Terima kasih kerana ciri pengesahan kekangan HTML5, kita boleh melaksanakan semua tugas pengesahan masukan piawai di sisi pelanggan tanpa JavaScript, semata-mata dengan HTML5.
Untuk melaksanakan tugas yang berkaitan dengan pengesahan yang lebih rumit, HTML5 menyediakan kami dengan API JavaScript Pengesahan Kekangan kami boleh gunakan untuk menyediakan skrip pengesahan peribadi kami.
Mengesahkan dengan jenis Input Semantik
HTML5 telah diperkenalkan jenis input semantik yang - selain daripada menunjukkan makna elemen untuk ejen pengguna - juga boleh digunakan untuk sahkan input pengguna dengan menghadkan pengguna ke format input tertentu.
Selain jenis input yang telah wujud sebelum HTML5 (teks
, kata laluan
, mengemukakan
, menetapkan semula
, radio
, kotak semak
, butang
, tersembunyi
), kami juga boleh menggunakan yang berikut jenis input HTML5 semantik: e-mel
,tel
,url
,nombor
,masa
,Tarikh
,masa tarikh
,datetime-local
, bulan
,minggu
, pelbagai
, carian
,warna
.
Kami dengan selamat boleh menggunakan jenis input HTML5 dengan penyemak imbas yang lebih lama, kerana mereka akan berkelakuan sebagai bidang dalam pelayar yang tidak menyokongnya.
Mari lihat apa yang berlaku apabila pengguna memasuki jenis input yang salah. Katakanlah kami telah membuat medan input e-mel dengan kod berikut:
Apabila pengguna mengetik rentetan yang tidak menggunakan format e-mel, algoritma pengesahan kekangan tidak mengemukakan borang, dan mengembalikan mesej ralat:
Peraturan yang sama juga digunakan untuk jenis input lain, contohnya taip = "url"
pengguna hanya boleh menghantar input yang mengikuti format URL (bermula dengan protokol, seperti http: //
atau ftp: //
).
Beberapa jenis input menggunakan reka bentuk itu tidak membenarkan pengguna memasukkan format input yang salah, sebagai contoh warna
dan pelbagai
.
Sekiranya kita menggunakannya warna
jenis input pengguna dikekang sama ada memilih warna dari pemetik warna atau tinggal dengan hitam lalai. Medan input ialah dikekang oleh reka bentuk, oleh itu ia tidak memberi banyak peluang untuk kesilapan pengguna.
Apabila ia sesuai, ia patut dipertimbangkan menggunakan Tag HTML yang berfungsi sama dengan jenis input yang disekat oleh reka bentuk; ia membolehkan pengguna memilih dari senarai jatuh turun.
Gunakan Atribut Pengesahan HTML5
Menggunakan jenis input semantik menetapkan kekangan tertentu ke atas pengguna yang dibenarkan untuk menghantar, tetapi dalam banyak kes, kita mahu pergi sedikit lagi. Ini adalah ketika atribut yang berkaitan dengan pengesahan daripada tag boleh membantu kami.
Atribut yang berkaitan dengan pengesahan adalah jenis input tertentu (mereka tidak boleh digunakan semua jenis) di mana mereka mengenakan lebih banyak kekangan.
1. diperlukan
untuk mendapatkan input yang sah dengan segala cara
The diperlukan
atribut adalah sifat pengesahan HTML yang paling terkenal. Ianya adalah atribut boolean yang bermaksud ia tidak mengambil sebarang nilai, kita hanya perlu meletakkannya di dalamnya tanda jika kita mahu menggunakannya:
Jika pengguna lupa untuk memasukkan nilai ke dalam medan input yang diperlukan, penyemak imbas mengembalikan mesej ralat yang memberi amaran kepada mereka untuk mengisi bidang, dan mereka tidak boleh mengemukakan borang itu sehingga mereka telah memberikan input yang sah. Itulah sebabnya penting untuk sentiasa tandakan secara visual bidang yang diperlukan untuk pengguna.
The diperlukan
atribut boleh digunakan bersama-sama dengan jenis input berikut: teks
, carian
, url
, tel
, e-mel
, kata laluan
, Tarikh
, masa tarikh
, datetime-local
, bulan
, minggu
,masa
, nombor
, kotak semak
, radio
, fail
, ditambah dengan dan
Tag HTML.
2. min
, maks
dan langkah
untuk pengesahan nombor
The min
, maks
dan langkah
ciri-ciri membolehkan kita untuk meletakkan kekangan pada medan input nombor. Mereka boleh digunakan bersama dengan pelbagai
, nombor
, Tarikh
, bulan
, minggu
, masa tarikh
, datetime-local
, dan masa
jenis input.
The min
dan maks
atribut menyediakan cara yang baik dengan mudah tidak termasuk data yang tidak munasabah. Misalnya contoh di bawah ini memaksa pengguna untuk menyerahkan umur antara 18 dan 120.
Apabila algoritma pengesahan kekangan merebak menjadi input pengguna yang lebih kecil daripada min
, atau lebih besar daripada yang maks
nilai, ia menghalangnya daripada mencapai backend, dan mengembalikan mesej ralat.
The langkah
atribut menentukan selang angka antara nilai undang-undang bidang input berangka. Sebagai contoh, jika kita mahu pengguna memilih hanya dari tahun lompat kita boleh menambah langkah = "4"
atribut ke lapangan. Dalam contoh di bawah saya menggunakan nombor
jenis input, kerana tidak ada jenis = "tahun"
dalam HTML5.
Dengan kekangan yang ditetapkan sebelum ini, pengguna hanya boleh memilih dari tahun lompat antara 1972 dan 2016 jika mereka menggunakan anak panah kecil yang datang dengan nombor
jenis input. Mereka juga boleh menaip nilai secara manual ke dalam medan input, tetapi sekiranya ia tidak memenuhi kekangan, penyemak imbas akan mengembalikan mesej ralat.
3. panjang maksimum
untuk pengesahan panjang teks
The panjang maksimum
atribut menjadikannya mungkin tetapkan panjang aksara maksimum untuk medan input tekstual. Ia boleh digunakan bersama dengan teks
, carian
, url
, tel
, e-mel
dan kata laluan
jenis input, dan dengan Tag HTML.
The panjang maksimum
atribut boleh menjadi penyelesaian yang sangat baik untuk bidang nombor telefon yang tidak boleh mempunyai lebih daripada sebilangan aksara, atau untuk bentuk hubungan di mana kita tidak mahu pengguna menulis lebih daripada panjang tertentu.
Coretan kod di bawah menunjukkan contoh untuk yang terakhir, ia mengehadkan mesej pengguna kepada 500 aksara.
The panjang maksimum
atribut tidak mengembalikan mesej ralat, tetapi penyemak imbas semata-mata tidak membenarkan pengguna menaip lebih daripada nombor aksara yang ditentukan. Itulah sebabnya ia sangat penting memaklumkan pengguna tentang kekangan tersebut, jika tidak, mereka tidak akan faham mengapa mereka tidak boleh meneruskan dengan menaip.
4. corak
untuk pengesahan Regex
The corak
atribut membenarkan kami gunakan Ekspresi Biasa dalam proses pengesahan input kami. Ungkapan biasa adalah a set aksara yang telah ditetapkan sebelumnya yang membentuk corak tertentu. Kita boleh menggunakannya sama ada untuk mencari rentetan yang mengikuti corak, atau untuk menguatkuasakan format tertentu yang ditakrifkan oleh corak.
Dengan corak
atribut kita boleh melakukan yang kedua - menghalang pengguna untuk menghantar input mereka dalam format itu sepadan dengan ungkapan biasa yang diberikan.
The corak
atribut mempunyai banyak kes penggunaan, tetapi ia boleh menjadi sangat berguna apabila kita mahu mengesahkan medan kata laluan.
Contoh di bawah memerlukan pengguna untuk memasukkan kata laluan yang minimum 8 aksara panjang, dan mengandungi sekurang-kurangnya satu huruf dan satu nombor (sumber regex yang saya gunakan).
Beberapa perkara lagi
Dalam artikel ini, kita melihat cara menggunakannya pengesahan borang yang disediakan oleh penyemak imbas disediakan oleh algoritma pengesahan kekangan asal HTML5. Untuk mewujudkan skrip pengesahan tersuai kami, kami perlu menggunakan API Pengesahan Masalah yang boleh menjadi langkah seterusnya dalam menapis kemahiran pengesahan bentuk.
Borang HTML5 boleh diakses oleh teknologi bantuan, jadi kami tidak perlu menggunakannya aria-diperlukan
Atribut ARIA untuk menandakan medan input yang diperlukan untuk pembaca skrin. Walau bagaimanapun, ia masih berguna untuk menambah sokongan kebolehaksesan untuk penyemak imbas yang lebih lama. Ia juga mungkin untuk memilih daripada pengesahan kekangan dengan menambah novalidate
atribut boolean kepada elemen.