Маягт: GET ба POST
Вэб програмчлалын гол зорилгуудын нэг бол хэрэглэгчээс өгөгдөл авах явдал юм. HTML маягт (form) бол үүний хамгийн түгээмэл арга. Маягтаас ирсэн өгөгдлийг PHP $_GET эсвэл $_POST superglobal-аар уншдаг. Энэ хоёрын ялгааг сайн ойлгох нь аюулгүй, найдвартай вэб апп бүтээхэд чухал.
HTML маягт бичих
Маягт нь <form> тэгтэй байдаг. action атрибут нь өгөгдлийг хаашаа илгээхийг, method атрибут нь GET эсвэл POST аргыг заана:
<!DOCTYPE html>
<html>
<body>
<form action="process.php" method="post">
<label>Нэр:</label>
<input type="text" name="ner" placeholder="Нэрээ оруулна уу">
<label>Нас:</label>
<input type="number" name="nas">
<button type="submit">Илгээх</button>
</form>
</body>
</html>
name атрибут маш чухал — PHP $_POST['ner'] гэж уншихад яг энэ нэрийг хайна.
$_POST аргаар өгөгдөл хүлээн авах
POST арга нь өгөгдлийг HTTP хүсэлтийн биед нуун дамжуулдаг тул нууц мэдээлэл (нууц үг, и-мэйл гэх мэт) илгээхэд тохиромжтой:
<?php
// process.php файл
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Утга байгаа эсэхийг шалгана
if (isset($_POST['ner']) && isset($_POST['nas'])) {
$ner = $_POST['ner'];
$nas = $_POST['nas'];
echo "Сайн уу, " . $ner . "!";
echo "Таны нас: " . $nas;
}
}
?>
$_SERVER['REQUEST_METHOD'] === 'POST' шалгалт нь маягтгүйгээр хуудсанд шууд орсон хэрэглэгчийн хувьд алдаа гарахаас сэргийлдэг.
$_GET аргаар өгөгдөл дамжуулах
GET арга нь өгөгдлийг URL-д нээлттэй дамжуулдаг. Хайлт, шүүлтүүр, хуудас дугаарлалт зэрэгт тохиромжтой:
<?php
// URL: /search.php?keyword=PHP&page=2
$keyword = '';
$page = 1;
if (isset($_GET['keyword'])) {
$keyword = $_GET['keyword'];
}
if (isset($_GET['page'])) {
$page = (int)$_GET['page']; // тоо болгон хөрвүүлнэ
}
echo "Хайлт: " . $keyword;
echo "Хуудас: " . $page;
?>
URL-д иймэрхүү харагдана: search.php?keyword=PHP&page=2 — хэрэглэгч URL-г шууд харж, өөрчилж болно.
Нэг хуудсанд маягт ба боловсруулалт
Маягт болон PHP боловсруулалтыг нэг файлд нэгтгэж болдог. Энэ нь практик дээр маш түгээмэл хэрэглэгддэг:
<?php
$мэндчилгээ = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$ner = isset($_POST['ner']) ? $_POST['ner'] : '';
if ($ner !== '') {
$мэндчилгээ = "Сайн уу, " . htmlspecialchars($ner) . "!";
}
}
?>
<!DOCTYPE html>
<html>
<body>
<?php if ($мэндчилгээ): ?>
<p><?php echo $мэндчилгээ; ?></p>
<?php endif; ?>
<form action="" method="post">
<input type="text" name="ner" placeholder="Нэрээ оруулна уу">
<button type="submit">Мэндлэх</button>
</form>
</body>
</html>
action="" гэж хоосон орхивол маягт яг одоогийн URL руу дахин илгээнэ. htmlspecialchars() функц нь XSS халдлагаас хамгаалдаг — гаралтыг хэвлэхдээ үргэлж ашиглах хэрэгтэй.
GET ба POST — хэзээ алийг ашиглах вэ?
| | GET | POST | |---|---|---| | Өгөгдөл хаана | URL-д харагдана | Нуугдмал | | Ашиглах тохиолдол | Хайлт, шүүлтүүр | Нэвтрэх, маягт | | Bookmarkable | Тийм | Үгүй | | Урт хязгаар | ~2000 тэмдэгт | Хязгаргүй |
Дараагийн хичээлд:
Маягтаас ирсэн өгөгдлийг хэрхэн шалгаж, баталгаажуулах (validation) талаар үзнэ. Хоосон утга, буруу формат, хэт урт мөр зэрэг нийтлэг асуудлуудыг хэрхэн зохицуулахыг сурна.