سشن ها (Sessions)
«سشن پی اچ پی» یعنی نگه داری داده کاربر بین صفحات. «سشن (Session)» موقتی است. برخلاف «کوکی (Cookie)»، داده روی سرور می ماند. مثل بازی که مرحله ات را به خاطر می سپارد. برای نگه داری طولانی، بهتر است از دیتابیس استفاده کنیم.
سشن پی اچ پی چیست؟
وب «بی حالت (Stateless)» است. یعنی سرور شما را فراموش می کند. «متغیر سشن (Session Variable)» این مشکل را حل می کند. داده کاربر را روی سرور نگه می دارد. مثلا نام کاربری یا رنگ دلخواه.
نکته: اگر ذخیره دائمی می خواهید، از دیتابیس استفاده کنید. نمونه ساده را در کوکی ها و فیلترها هم ببینید. همچنین برای آشنایی، این لینک را ببین: سشن پی اچ پی.
شروع سشن
با تابع session_start() سشن را آغاز کن. این تابع باید قبل از هر خروجی باشد. یعنی حتی قبل از <html>. سپس در آرایه سراسری $_SESSION مقدار بگذار.
<?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>
هشدار: خروجی قبل از session_start() خطا می دهد. همیشه اول سشن را شروع کن.
خواندن مقادیر سشن
در هر صفحه جدید، دوباره session_start() را صدا بزن. سپس از $_SESSION بخوان. لازم نیست متغیرها را دستی منتقل کنی.
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
برای دیدن همه مقادیر، از print_r() روی $_SESSION استفاده کن.
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
تغییر مقدار سشن
برای تغییر، همان کلید را دوباره مقداردهی کن. دقیقا مانند یک متغیر معمولی.
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
حذف سشن
برای پاک کردن همه مقادیر، session_unset() را بزن. برای پایان کامل سشن، session_destroy() را هم صدا بزن.
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>
چطور من را می شناسد؟
مرورگر یک «کلید کاربر (Session ID)» نگه می دارد. سرور با این کلید شما را می شناسد. اگر کلید یافت شود، همان سشن ادامه می یابد. اگر نباشد، سشن تازه ساخته می شود.
جمع بندی سریع
- session_start() را همیشه اول بزن.
- داده ها در $_SESSION ذخیره می شوند.
- برای تغییر، دوباره مقداردهی کن.
- برای پایان، unset و destroy را بزن.
- برای ماندگاری، از دیتابیس استفاده کن.