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:
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
Chiqarishda tozalash
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: ...")vaexit.
Bir necha qiymatli maydonlar
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
Belgilanmagan checkbox umuman yuborilmaydi — shuning uchun isset
bilan tekshiriladi, qiymatiga qaralmaydi.
Xavfsizlik eslatmasi
Amaliy mashq
$_POSTni taqlid qilib,??vatrimbilan qiymat oling;filter_varbilan email tekshiring;- bo’sh maydon uchun xato xabari yozing;
htmlspecialcharsbilan xavfli matnni chiqaring;- checkbox holatini
issetbilan aniqlang; - xatolar massivini yig’ib, hammasini ko’rsating.
Qisqacha xulosa
- Forma ma’lumoti
$_POSTyoki$_GETmassivida keladi (name— kalit). - GET o’qish uchun, POST o’zgartirish uchun.
?? ""+trim+ tur o’girish — qabul qilishning standart uchligi.filter_varbilan email, son va manzilni tekshiring.- Xato bo’lsa, foydalanuvchi kiritganini formaga qaytaring.
- Muvaffaqiyatda
header("Location: ...")vaexit— POST-Redirect-GET. - Chiqarishda
htmlspecialcharsmajburiy.
Keyingi darsda include va kodni bo’lish — fayllarni birlashtirish.