PHP
June 18, 2019

Formani tekshirish

O'tgan darsimizda biz formani talab qilishni o'rganganmiz. Bugungi darsimizda esa ma'lumotlarni tekshirish bilan tanishamiz.Formani tekshirish deganda formamiz maydonlari(ism,email,raqam,izoh)ning to'g'ri kiritilganligini tekshirish tushuniladi. O'tgan darsimizni youtube ko'rishingiz mumkin ๐Ÿ‘‰ https://www.youtube.com/watch?v=_ENHpC-0Xik

O'tgan darsimizdagi forma kodimizni eslab olaylik - https://github.com/sobirjonovs/php-form-required/

PHP da o'zining talaygina foydali, dasturchining ishini osonlashtiradigan ichki funksiyalari mavjud. Funksiyalar bilan tanishib chiqish - https://www.youtube.com/watch?v=Ufa1PEP9V8Q

Bugungi darsimizga oid funksiya bu filter_var() funksiyasi. Bu funksiyaning o'zining belgilangan 2ta filtr o'zgaruvchilari bor. Ular:

  • Tekshirish filterlari
  • Sanitar filterlar

Ushbu funksiyaning sintaksisi:

filter_var(var, filername, options)

  • var - filterlanishi kerak bo'lgan o'zgaruvchi. O'zgaruvchi yozilishi shart.
  • filtername - Bu yerda ishlatilishi kerak filterning nomi yoki ID si ifodalanadi. Yozilishi ixtiyoriy.
  • options - Foydalanish uchun kerakli FLAG/TANLOV larni ifodalaydi. Har bir filter uchun kerakli tanlov yoki flaglarni tekshirish kerak.

Endi bu funksiyani formada ishlatishni o'rgansak. Buni formada qo'llash uchun o'zimiz uchun qulay bo'lish uchun o'zgaruvchilardan foydalanamiz. Bizning formamizda $fname, $lname, $email, $study o'zgaruvchilar ya'ni post metodi orqali maydon nomlari berilgan. Endi har bir maydon to'ldirilganda, kiritilgan ma'lumot fake, oddiy qilib aytganda yolg'on emasligini tekshiramiz. Yolg'on emasligi deganda men, masalan bir xil odamlar formaga emailni /*/5*4++2#@gmail.com shaklida kiritishi mumkin. Kiritilgan ma'lumotini tekshiramiz:


$email = "tutorialsuz()@gmail.com"; if(filter_var($email, FILTER_VALIDATE_EMAIL)){ echo ("$email - to'g'ri kiritildi."); }else { echo ("$email - noto'g'ri kiritildi."); }


Ekranga chiqadigan natija: tutorialsuz()@gmail.com - noto'g'ri kiritildi.


Bizda filter nomi - FILTER_VALIDATE_EMAIL. Bu bizga kiritilgan emailni tekshiradi. Tekshirish deganda, bu pochta butun VEB da mavjudligi emas, kiritilgan ma'lumot pochta nomi qoidalariga to'g'ri kelishini angalatadi. Menimcha tushundingiz.


Muntazam ifodalardan foydalanish

Endi emailni balki boshqa ma'lumotlarni to'g'ri yoki noto'g'ri kiritilganligini tekshirish uchun ikkinchi usuli : Muntazam ifodalardan foydalanishimiz ham mumkin. Lekin muntazam ifodalardan foydalanish ko'proq joyni oladi va filterdan foydalanish kabi oson emas. Muntazam ifodalarning afzalliklari:

  • Satr ma'lumotlaridagi andozani aniqlashni osonlashtiradi. Dasturchining vaqtini tejaydi.
  • Foydalanuvchi kiritgan, email manzil, IP, domen nomlari, telefon raqamlarni tekshirish mumkin.
  • Qidiruv natijalaridagi kalit so'zlarni yoritadi.

PHP'da muntazam ifodalar

PHP da muntazam ifodalar bilan ishlash uchun imkon beradigan o'zining ichki funksiyalari mavjud. Keng foydalaniladigan funksiyalar:

  • preg_match โ€“ bu funksiya satr bilan andozani solishtirish uchun ishlatiladi. Agar mutanosiblik topilsa, true, aksi bo'lsa false natija qaytaradi.
  • preg_split โ€“ bu funksiya satr bilan andozani solishtiradi va natijalarni sonli massivga bo'ladi.
  • preg_replace โ€“ bu funksiya satr bilan andozani solishtiradi va belgilangan matn bilan almashtiradi.
*M.I - muntazam ifoda

Sintaksis:

<?php funksiyanomi('/andoza/',predmet); ?>

  • "funksiyanomi(...)" - preg_match, preg_split yoki preg_replace ham bo'lishi mumkin.
  • "/.../" - oldindagi slesh bizning M.Imizning boshlanishini, oxiridagi slesh tugashini ifodalaydi.
  • "/andoza/" - solishtirishimiz kerak bo'lgan andoza.
  • "predmet" - solishtiriladigan satr matni

Hozir biz preg_match bilan tanishamiz. Keling sodda misol bilan tushuntiramiz:


<?php $url = "www.tutorials.uz"; if (preg_match("/tutorials/", $url)) { echo "$url url manzilida tutorials topildi."; } else { echo "$url url manzilida tutorials topilmadi."; } ?>


  • "preg_match(...)" - php muntazam ifoda funksiyasi
  • "'/tutorialsuz/'" - solishtirilishi kerak bo'lgan M.I andozasi.
  • "$url" - solishtirilishi kerak bo'lgan matndan iborat o'zgaruvchi.

Endi keling, preg_match() funksiyasi orqali emailni tekshiramiz:


<?php $email = "[email protected]"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $email)) { echo "$email email manzil mavjud."; } else { echo "$email email manzil mavjud emas."; } ?>


  • "'/.../'" - muntazam ifodaning boshlanishi va oxiri.
  • "^[a-zA-Z0-9._-]" - katta va kichik harflar,0dan 9gacha bo'lgan sonlar, nuqta, pastki chiziq va tireni solishtiradi.
  • "+@[a-zA-Z0-9-]" - @ belgi bilan birgalikda, kichik va katta harflarni, 0 dan 9 gacha bo'lgan son va tireni solishtiradi.
  • "+\.[a-zA-Z.]{2,5}$/" - bekslesh(\) dan foydalanib nuqtadan qochamiz , keyin satrning oxirida 2 va 5 orasichalik o'lchamdagi kichik va katta harflarni solishtiradi.

META BELGILAR BO'YICHA QO'LLANMA: