Superglobal хувьсагчид
PHP-д зарим тусгай хувьсагчид байдаг — тэдгээрийг superglobal гэж нэрлэдэг. Эдгээр хувьсагчид програмын аль ч хэсгээс, функц дотроос ч, файл даяар ч шууд хандах боломжтой. global гэсэн түлхүүр үг хэрэглэх шаардлагагүй. PHP нь дараах superglobal хувьсагчидтай: $_GET, $_POST, $_REQUEST, $_SESSION, $_COOKIE, $_FILES, $_SERVER, $_ENV, $GLOBALS.
$_SERVER — серверийн мэдээлэл
$_SERVER нь серверийн болон HTTP хүсэлтийн мэдээллийг агуулдаг массив юм. Хамгийн түгээмэл хэрэглэгддэг утгуудыг харцгаая:
<?php
// Хэрэглэгчийн IP хаяг
echo $_SERVER['REMOTE_ADDR']; // жишээ: 192.168.1.1
// Одоогийн файлын нэр
echo $_SERVER['PHP_SELF']; // жишээ: /index.php
// HTTP хүсэлтийн арга (GET эсвэл POST)
echo $_SERVER['REQUEST_METHOD']; // GET эсвэл POST
// Хөтчийн нэр
echo $_SERVER['HTTP_USER_AGENT']; // Chrome, Firefox гэх мэт
// Серверийн нэр
echo $_SERVER['SERVER_NAME']; // жишээ: localhost
?>
$_SERVER ашиглан хэрэглэгч хэрхэн, хаанаас хандаж байгааг мэдэж болдог — энэ нь аюулгүй байдлын шалгалт хийхэд маш хэрэгтэй.
$_GET ба $_POST
Эдгээр хоёр superglobal нь маягтаас ирсэн өгөгдлийг агуулдаг.
$_GET — URL-д дамжуулсан өгөгдлийг уншина:
<?php
// URL: /search.php?q=PHP&lang=mn
echo $_GET['q']; // PHP
echo $_GET['lang']; // mn
// Утга байгаа эсэхийг шалгаад дараа ашиглах
if (isset($_GET['q'])) {
$query = $_GET['q'];
echo "Хайлт: " . $query;
}
?>
$_POST — маягтаас POST аргаар ирсэн өгөгдлийг уншина:
<?php
// HTML маягт POST-оор илгээсэн гэж үзье
if (isset($_POST['ner'])) {
$ner = $_POST['ner'];
echo "Сайн уу, " . $ner . "!";
}
?>
$GLOBALS — бүх глобал хувьсагч
$GLOBALS нь скриптийн бүх глобал хувьсагчийг нэг дор агуулдаг. Функц дотроос гадны хувьсагчид хандахад ашигладаг:
<?php
$нэр = "Болд";
$нас = 25;
function мэнд() {
// Функц дотор глобал хувьсагчид хандана
echo $GLOBALS['нэр'] . " — " . $GLOBALS['нас'] . " настай";
}
мэнд(); // Болд — 25 настай
?>
$_REQUEST — нийлмэл superglobal
$_REQUEST нь $_GET, $_POST, $_COOKIE гурвын өгөгдлийг нэгтгэн агуулдаг. Аль аргаар ирсэн өгөгдлийг ялгахгүй уншихад тохиромжтой:
<?php
// GET эсвэл POST аль аргаар ирсэн ч уншина
if (isset($_REQUEST['утга'])) {
echo $_REQUEST['утга'];
}
?>
Гэхдээ аюулгүй байдлын үүднээс $_GET ба $_POST-г тусад нь хэрэглэх нь илүү зөв байдаг.
$_SESSION ба $_COOKIE
$_SESSION нь хэрэглэгчийн мэдээллийг серверт хадгалдаг, $_COOKIE нь хэрэглэгчийн браузерт хадгалдаг. Эдгээрийг 31-р болон 32-р хичээлүүдэд дэлгэрэнгүй судална.
<?php
session_start(); // Session ашиглахын өмнө заавал дуудна
$_SESSION['хэрэглэгч'] = "Болд";
echo $_SESSION['хэрэглэгч']; // Болд
?>
Дараагийн хичээлд:
Superglobal-уудын хамгийн чухал хэрэглээ болох маягтын өгөгдөл дамжуулалтыг судална. $_GET ба $_POST ашиглан HTML маягтаас PHP руу өгөгдөл хэрхэн дамжуулахыг бүрэн жишээгээр үзнэ.