PHP sessiyalar (sessions)
PHP sessiyasi nima?
Seans o‘zgaruvchilari bitta foydalanuvchi haqida ma’lumotni saqlaydi va bitta ilovaning barcha sahifalarida mavjud.
Ilova bilan ishlaganingizda, uni ochasiz, ba’zi o‘zgarishlar qilasiz va keyin uni yopasiz. Bu sessiyaga o‘xshaydi. Kompyuter sizning kimligingizni biladi. Ilovani qachon ishga tushirganingizni va uni qachon yopishingizni biladi. Ammo internetda bitta muammo bor: veb-server sizning kimligingizni va nima qilayotganingizni bilmaydi, chunki HTTP manzili holatini saqlamaydi.
Seans o‘zgaruvchilari foydalanuvchi ma’lumotlarini saqlash orqali ushbu muammoni hal qiladi bir nechta sahifalarda foydalanish uchun (masalan, foydalanuvchi loginlari, xarid qilish savatlari va boshqalar).
Odatiy bo‘lib, sessiya o‘zgaruvchilari foydalanuvchi brauzerni yopguncha davom etadi.
PHP seans funksiyalari
Eng muhim sessiya funksiyalari:
session_start()- yangi seansni boshlaydi$_SESSION- Seans o‘zgaruvchilarini saqlaydi va ularga kirishunset()- Muayyan seans o‘zgaruvchisini o‘chiradi (masalan, unset($_SESSION["favcolor"]))session_destroy()- joriy seans bilan bog‘liq barcha ma’lumotlarni yo‘q qiladisession_unset()- barcha seans o‘zgaruvchilarini bo‘shatadi
PHP sessiyasini boshlang
Sessiya session_start() funksiyasi bilan boshlanadi.
Eslatma: session_start() funksiyasi har bir PHP skriptining boshida HTML natijasi yoki bo‘sh joydan oldin chaqirilishi kerak!
PHP superglobal o‘zgaruvchisi $_SESSION joriy skriptda mavjud bo‘lgan sessiya o‘zgaruvchilarini saqlash va ularga kirish uchun ishlatiladi.
Endi “test.php” nomli PHP sahifasini yaratamiz. Ushbu sahifada biz yangi PHP seansini boshlaymiz va ba’zi seans o‘zgaruvchilarini o‘rnatamiz:
Misol
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Misolni ishga tushirish »
PHP seans o‘zgaruvchan qiymatlarini oling
Keyinchalik, "test2.php" deb nomlangan boshqa PHP sahifasini yaratamiz. Ushbu sahifadan biz birinchi sahifada o‘rnatgan sessiya ma’lumotlariga kiramiz ("test.php").
Misol
<?php
// Resume the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Output session variables that were set on previous page
if(isset($_SESSION["favcolor"])) {
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
} else {
echo "No session data found.";
}
?>
</body>
</html>
Misolni ishga tushirish »
Bu qanday ishlaydi? Bu men ekanligimni qayerdan biladi?
Foydalanuvchi session_start() funksiyasini chaqiruvchi sahifaga tashrif buyurganida, PHP foydalanuvchi brauzerida mavjud sessiya identifikatorini tekshiradi. Agar sessiya identifikatori topilmasa, PHP noyob, tasodifiy identifikatorni yaratadi.
Ushbu identifikator (PHPSESSID nomli cookie-faylda saqlanadi) mijozda saqlanadigan yagona ma’lumotdir. tomoni. sessiya ma’lumotlari serverda xavfsiz tarzda saqlanadi, odatda a vaqtinchalik fayl.
Keyingi sahifani yuklashda server cookie faylidan sessiya identifikatorini oladi va undan seans ma’lumotlarini PHP superglobal $_SESSION’ga yuklash uchun foydalanadi. Seans ma’lumotlari keyin barcha sferalarda joriy skript uchun mavjud bo‘ladi.
Foydalanuvchi seansi uchun barcha seans o‘zgaruvchilari qiymatlarini ko‘rsatishning yana bir usuli print_r($_SESSION) dan foydalanishdir:
Misol
<?php
// Resume the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
Misolni ishga tushirish »
PHP seans o‘zgaruvchisini o‘zgartirish
Seans o‘zgaruvchisini o‘zgartirish uchun uning ustiga yozing:
Misol
<?php
// Resume the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Misolni ishga tushirish »
PHP sessiyasini yo‘q qilish
Keyinchalik, "logout.php" deb nomlangan boshqa PHP sahifasini yaratamiz. Bu yerda biz barcha seans o‘zgaruvchilarini o‘chirib tashlaymiz va sessiyani yo‘q qilamiz (session_unset() va session_destroy() bilan):
Misol
<?php
// Resume the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Unset all session variables
session_unset();
// Destroy the session
session_destroy();
echo "You have been logged out."
?>
</body>
</html>
Misolni ishga tushirish »
PHP seanslari va kukilar
Seanslar va cookie-fayllar o‘rtasidagi asosiy farqlar:
| Session | Cookies |
|---|---|
| Ma’lumotlar serverda saqlanadi | Ma’lumotlar brauzerda saqlanadi |
| Brauzer yopilganda yoki foydalanuvchi faol bo‘lmaganidan keyin muddati tugaydi biroz vaqt | Yaroqlilik muddati uzoq bo‘lishi mumkin |
| Ko‘proq xavfsiz, chunki ma’lumotlar brauzerda saqlanmaydi | Ma’lumotlar brauzerda saqlanganligi sababli kamroq xavfsiz |
| Keyinchalik samarali, brauzer va o‘rtasida doimiy ma’lumotlarni uzatishni talab qilmaydi server | Kamroq samarali, chunki ma’lumotlar har bir so‘rov bilan yuboriladi |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
