Form — foydalanuvchidan tuzilgan ma’lumot yig‘ish va serverga yuborish uchun ishlatiladigan HTML elementlar majmui. <form> elementi input, select, textarea va button kabi nazoratlarni bir submissionga birlashtiradi. Form login, qidiruv, buyurtma, fayl yuklash va sozlama tahrirlashda qo‘llanadi. Brauzer formani JavaScriptsiz ham yubora oladi; accessibility, validation va HTTP semantikasi uning asosiy xususiyatlaridir.
Element va atributlar
action so‘rov yuboriladigan URLni, method esa odatda get yoki postni belgilaydi. GET form data’ni URL query qismiga qo‘shadi va qidiruv kabi safe, takrorlanadigan amallar uchun mos. POST data’ni request body’da yuboradi va holat o‘zgartiruvchi amallarda ishlatiladi. POSTning o‘zi shifrlash emas; maxfiy ma’lumot HTTPS orqali uzatiladi.
<form action="/search" method="get">
<label for="q">Qidiruv</label>
<input id="q" name="q" type="search" required>
<button type="submit">Topish</button>
</form>
Faqat name atributiga ega successful control submissionga kiradi. disabled element yuborilmaydi, readonly qiymat esa yuborilishi mumkin. Buttonning default turi form ichida submit bo‘lishi mumkin; oddiy UI tugmasiga type="button" yozish tasodifiy submissionni oldini oladi.
Encoding
Standart application/x-www-form-urlencoded matn maydonlarini percent-encoded juftliklarda yuboradi. multipart/form-data fayl upload va binary qiymatlar uchun boundaryli qismlardan foydalanadi. text/plain debuggingda uchrashi mumkin, lekin tuzilgan production formati sifatida kam ishlatiladi.
File inputdagi client filename serverdagi saqlash yo‘li sifatida ishlatilmaydi. Server o‘z identifikatorini yaratadi, hajm, format va mazmunni tekshiradi. accept atributi file pickerga filter beradi, ammo xavfsizlik tekshiruvi emas; client uni chetlab o‘ta oladi.
Label va accessibility
Har nazorat ko‘rinadigan labelga ega. <label for> qiymati input idsi bilan bog‘lanadi; label bosilganda nazorat fokus oladi. Placeholder label o‘rnini bosmaydi, chunki qiymat kiritilganda yo‘qoladi va screen reader uchun semantikasi boshqa. Bog‘liq maydonlar fieldset va legend bilan guruhlanadi.
Xato xabari aniq maydon bilan aria-describedby orqali bog‘lanishi va faqat rang bilan ko‘rsatilmasligi kerak. Submissiondan keyin fokus umumiy xato sarlavhasiga yoki birinchi noto‘g‘ri maydonga boshqariladi. Server qaytargan xato foydalanuvchining xavfsiz qiymatlarini saqlashi mumkin, ammo parol va payment secret qayta to‘ldirilmaydi.
Validation
HTML required, minlength, max, type="email" kabi constraint validation beradi. Bu foydalanuvchiga tez feedback, ammo server tekshiruvining o‘rnini bosmaydi. novalidate yoki bevosita HTTP request client qoidalarini chetlab o‘tishi mumkin. Server field, cross-field va biznes invariantlarni qayta tekshiradi.
Form qayta render qilinganda user input HTML kontekstida escape qilinadi. Rich text bo‘lsa alohida sanitization siyosati qo‘llanadi. Databasega yozishda prepared statement yoki ORM parameterization ishlatiladi. Validation, output encoding va database query xavfsizligi turli qatlamlardir.
CSRF va takroriy yuborish
Cookie bilan autentifikatsiyalangan state-changing form CSRF token bilan himoyalanishi mumkin. Token sessiya yoki requestga bog‘lanadi, serverda tekshiriladi va Origin/Referer nazorati bilan to‘ldiriladi. SameSite cookie xavfni kamaytiradi, ammo barcha holatlar uchun yagona himoya emas.
Foydalanuvchi submitni ikki marta bosishi yoki tarmoq retry qilishi mumkin. Tugmani vaqtincha o‘chirish UXga yordam beradi, lekin server idempotency key, unique constraint yoki tranzaksiya bilan takroriy buyurtmani boshqaradi. Muvaffaqiyatli POSTdan keyin Post/Redirect/Get usuli refresh paytida formni qayta yuborish ogohlantirishini kamaytiradi.
Bog‘liq tushunchalar
HTML, Input element, HTTP POST, Validation, CSRF, multipart/form-data, Accessibility