PHP
June 12, 2019

Formalar bilan ishlash

Biz veb-ilova yoki vebsayt ustida ishlayotganimizda, biz ko'pincha foydalanuvchilardan Login va Ro'yhatdan o'tish orqali ma'lumot olishimizga to'g'ri keladi.

Veb-sahifada formani yaratish HTML orqali amalga oshirilsa, PHP veb-sahifadan olingan ma'lumotlarni serverga yuborish va ularni qayta ishlashda transport sifatida xizmat qiladi.

PHP da to'plangan forma ma'lumotlarini qayta ishlashda ikkita supergloballar: $_GET va $_POST metodlari ishlatiladi.

HTML formaning ishlashi bo'yicha tushuncha

Keling oddiy HTML forma yaratamiz va uni qanday ishlashini tushunishga harakat qilamiz. <form> tegi ichida ishlatilgan atributlarning vazifalarini o'rganamiz.

<html>
    <body>

        <form action="forma.php" method="POST">
            Ism: <input type="text" name="name"> <br/>
            Email: <input type="text" name="email"> <br/>
            <input type="submit" value="Yubor">
        </form>

    </body>
</html>

Yuqoridagi kodda biz HTML forma yaratish uchun <form> tegidan foydalandik va ma'lumot kiritish uchun Ism va Email maydonchalarini ochib oldik va ma'lumotni yuborish uchun submitdan foydalandik.

Form teg ichida ikkita atribut mavjud, action va method. Ular nima uchunligini bilasizmi?

  1. action: Bu atributdan foydalanish bilan biz forma ma'lumotlarini ishlab va to'playdigan fayl nomini kiritolamiz. Yuqorida biz yozgan php fayl nomi.
  2. method: Bu atribut forma ma'lumotini yuborilish usulini ko'rsatadi, u POST metodi yoki GET metodi orqali yuborilishi mumkin.

Quyida GET metodi uchun forma namunasi:

<html>
    <body>

        <form action="forma.php" method="POST">
            Ism: <input type="text" name="name"> <br/>
            Email: <input type="text" name="email"> <br/>
            <input type="submit" value="Yubor">
        </form>

    </body>
</html>

Formani POST orqali yuborish

Agar biz forma metodi POST bo'lishini ko'rsatsak, unda forma ma'lumotlari serverga HTTP POST metodi dan foydalanib yuboradi.

Quyida bizda HTML formamizning action atributida ko'rsatilgan Php fayldagi forma ma'lumotini olish kodi bor.

<?php

// ism maydonidagi qiymatni olish
$ism= $_POST["name"];
// email maydonidagi qiymatni olish
$email = $_POST["email"];

echo "Assalomu alaykum, ". $name . "<br>";
echo "Sizning email manzilingiz: ". $email ."<br>";

?>

Va quyidagi natijani olamiz:

Form via POST method

Formani GET orqali yuborish

Agar biz forma metodi POST bo'lishini ko'rsatsak, unda forma ma'lumotlari serverga HTTP GET metodi dan foydalanib yuboradi.

Quyida bizda HTML formamizning action atributida ko'rsatilgan Php fayldagi forma ma'lumotini olish kodi bor. Bu safar biz GET superglobalidan foydalanmoqdamiz.

<?php

// ism maydonidagi qiymatni olish
$ism= $_GET["name"];
// email maydonidagi qiymatni olish
$email = $_GET["email"];

echo "Assalomu alaykum, ". $name . "<br>";
echo "Sizning email manzilingiz: ". $email ."<br>";

?>

Natija bir xil:

Form via GET method

GET metodidan foydalanish

GET metodi usulida, forma ma'lumotlari URL paramterlar ko'rinishida yuboriladi. Misol uchun, foydalanuvchi tomonidan to'ldirilgan forma ma'lumotlari ish skriptga yuboriladi, URL ga qo'shiladi.

<html>
    <body>

        <form action="forma.php" method="GET">
            Ism: <input type="text" name="name"> <br/>
            Yosh: <input type="text" name="age"> <br/>
            <input type="submit" value="Yubor">
        </form>

    </body>
</html>
<?php 
// ism maydonidagi qiymatni olish 
$ism= $_GET["name"]; 
// email maydonidagi qiymatni olish 
$age = $_GET["age"]; 
echo "Assalomu alaykum, ". $ism . "<br>"; 
echo "Sizning yoshingiz: ". $age ."<br>"; 
?>

Bizda ikkita maydon bor: ism va yosh. Ushbu maydonga kiritilgan ma'lumotlar forma yuborilgandan so'ng, brauzerimizning URL kiritiladigan maydonida aks etadi. Misol uchun: https://tutorials.uz/index.php?name=Sanjar&age=18 .

  • GET metodi orqali kiritilgan forma ma'lumotlari brauzerning URL maydonida ko'rinadi.
  • GET metodi ma'lumotlarni 2000 belgidan oshmagan holda yuborish bilan cheklangan.
  • GET metodi serverga ikkilamchi ma'lumotlarni yuborolmaydi, jumladan: rasm, hujjat va boshqalar.
  • GET metodidan ro'yhatdan o'tish va login(kirish) holatlarida aslo foydalanmang.
  • GET metodidan yuborilgan ma'lumotga QUERY_STRING muhit o'zgaruvchisidan foydalanib kirishimiz mumkin.

POST metodidan foydalanish

POST metodi orqali yuborilgan forma ma'lumotlari boshqalarga ko'rinmas bo'ladi(barcha nom/qiymatlar HTTP so'rovining tana qismi ichida qamrab olinadi) va ma'lumotni yuborishda hech qanday chegara mavjud emas.

Bundan tashqari POST metodi serverga ko'p-qismli ikkilamchi ma'lumot yuklashni qo'llaydi. Shuningdek, URL maydonida formadagi o'zgaruvchi va qiymatlar ko'rinmaydi.

<html>
    <body>

        <form action="forma.php" method="POST">
            Ism: <input type="text" name="name"> <br/>
            Yosh: <input type="text" name="age"> <br/>
            <input type="submit" value="Yubor">
        </form>

    </body>
</html>
<?php 
// ism maydonidagi qiymatni olish 
$ism= $_POST["name"]; 
// email maydonidagi qiymatni olish 
$age = $_POST["age"]; 
echo "Assalomu alaykum, ". $ism . "<br>"; 
echo "Sizning yoshingiz: ". $age ."<br>"; 
?>

URL maydonda:

  • POST metodida ma'lumot yuborish uchun hech qanday belgi cheklovi yo'q
  • POST metodi ASCII va ikkilamchi ma'lumotni yuborishda foydalanish mumkin
  • Ma'lumotlar xavfsizligiga kafolat
Ko'pgina dasturchilar ma'lumot bilan ishlashda POST metodidan foydalanishni afzal ko'rishadi.