PHP formalar bilan ishlash (GET va POST)

Ro’yxatdan o’tish, izoh qoldirish, qidiruv, buyurtma — foydalanuvchi bilan har qanday muloqot forma orqali boradi. Bu — PHP eng ko’p ishlatiladigan joy.

Forma qanday ishlaydi

HTML formasi ma’lumotni serverga yuboradi:

<form action="/royxat.php" method="post">
  <input type="text" name="ism">
  <input type="email" name="email">
  <button type="submit">Yuborish</button>
</form>

PHP tomonida u $_POST massivida paydo bo’ladi:

<?php
$ism = $_POST["ism"];
$email = $_POST["email"];

GET va POST farqi

GET POST
Ma’lumot qayerda Manzilda ko’rinadi So’rov tanasida
Hajmi Cheklangan (~2000 belgi) Katta
Saqlanadimi Tarix va zakladkada Yo’q
Qachon Qidiruv, filtr, sahifalash Parol, yozish, o’zgartirish

Ma’lumotni xavfsiz olish

Foydalanuvchi maydonni bo’sh qoldirishi yoki umuman yubormasligi mumkin:

PHP

Uch qoida birga ishladi:

  • ?? "" — maydon yo’q bo’lsa ogohlantirish chiqmaydi;
  • trim — ortiqcha bo’sh joy olib tashlanadi;
  • (int) — son kerak bo’lgan joyda turga o’giriladi.

So’rov turini tekshirish

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    // forma yuborildi — qayta ishlaymiz
} else {
    // sahifa endi ochildi — bo'sh formani ko'rsatamiz
}

Bu naqsh bitta faylda ham formani ko’rsatish, ham qabul qilish imkonini beradi.

Validatsiya

PHP
PHP

Chiqarishda tozalash

PHP

To’liq naqsh

Bitta faylda forma va uni qayta ishlash:

<?php
$xatolar = [];
$malumot = ["ism" => "", "email" => ""];

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $malumot["ism"] = trim($_POST["ism"] ?? "");
    $malumot["email"] = trim($_POST["email"] ?? "");

    if ($malumot["ism"] === "") {
        $xatolar["ism"] = "Ism kiritilishi shart";
    }
    if (!filter_var($malumot["email"], FILTER_VALIDATE_EMAIL)) {
        $xatolar["email"] = "Email noto'g'ri";
    }

    if (!$xatolar) {
        // Saqlash, xat yuborish va h.k.
        header("Location: /rahmat.php");
        exit;
    }
}
?>
<form method="post">
  <label>
    Ism:
    <input type="text" name="ism"
           value="<?= htmlspecialchars($malumot["ism"]) ?>">
  </label>
  <?php if (isset($xatolar["ism"])): ?>
    <span class="xato"><?= $xatolar["ism"] ?></span>
  <?php endif; ?>

  <label>
    Email:
    <input type="email" name="email"
           value="<?= htmlspecialchars($malumot["email"]) ?>">
  </label>
  <?php if (isset($xatolar["email"])): ?>
    <span class="xato"><?= $xatolar["email"] ?></span>
  <?php endif; ?>

  <button type="submit">Yuborish</button>
</form>

Uch muhim nuqta:

  • value="<?= htmlspecialchars(...) ?>" — xato bo’lsa foydalanuvchi yozganini qayta yozmasin;
  • xato o’sha maydon yonida ko’rsatiladi;
  • muvaffaqiyatda header("Location: ...") va exit.

Bir necha qiymatli maydonlar

PHP

HTML tomonida name="fanlar[]" yoziladi — kvadrat qavs PHP’ga “bu massiv” deb aytadi. is_array tekshiruvi majburiy: foydalanuvchi so’rovni o’zgartirib matn yuborishi mumkin.

Checkbox

PHP

Belgilanmagan checkbox umuman yuborilmaydi — shuning uchun isset bilan tekshiriladi, qiymatiga qaralmaydi.

Xavfsizlik eslatmasi

Amaliy mashq

  1. $_POST ni taqlid qilib, ?? va trim bilan qiymat oling;
  2. filter_var bilan email tekshiring;
  3. bo’sh maydon uchun xato xabari yozing;
  4. htmlspecialchars bilan xavfli matnni chiqaring;
  5. checkbox holatini isset bilan aniqlang;
  6. xatolar massivini yig’ib, hammasini ko’rsating.

Qisqacha xulosa

  • Forma ma’lumoti $_POST yoki $_GET massivida keladi (name — kalit).
  • GET o’qish uchun, POST o’zgartirish uchun.
  • ?? "" + trim + tur o’girish — qabul qilishning standart uchligi.
  • filter_var bilan email, son va manzilni tekshiring.
  • Xato bo’lsa, foydalanuvchi kiritganini formaga qaytaring.
  • Muvaffaqiyatda header("Location: ...") va exitPOST-Redirect-GET.
  • Chiqarishda htmlspecialchars majburiy.

Keyingi darsda include va kodni bo’lish — fayllarni birlashtirish.

Bu dars foydali bo'ldimi?

marta ko'rildi