PHP – جلسات (Sessions)
جلسه چیست؟
یک جلسه (Session) راهی برای ذخیرهسازی اطلاعات (در متغیرها) است که در صفحات مختلف قابل استفاده است. برخلاف کوکیها، اطلاعات در کامپیوتر کاربر ذخیره نمیشود.
جلسه PHP چیست؟
هنگامی که با یک برنامه کار میکنید، آن را باز میکنید، تغییراتی انجام میدهید و سپس آن را میبندید. این بسیار شبیه به یک جلسه است. کامپیوتر میداند که شما چه کسی هستید و چه زمانی برنامه را شروع و تمام میکنید. اما در اینترنت، یک مشکل وجود دارد: سرور وب نمیداند که شما چه کسی هستید یا چه کارهایی انجام میدهید، زیرا آدرس HTTP وضعیت را حفظ نمیکند.
متغیرهای جلسه (Session Variables) این مشکل را با ذخیره اطلاعات کاربر برای استفاده در صفحات مختلف (مثلاً نام کاربری، رنگ مورد علاقه و غیره) حل میکنند. به طور پیشفرض، متغیرهای جلسه تا زمانی که کاربر مرورگر را ببندد، باقی میمانند.
بنابراین، متغیرهای جلسه اطلاعات مربوط به یک کاربر واحد را نگه میدارند و برای تمام صفحات یک برنامه در دسترس هستند.
نکته: اگر به ذخیرهسازی دائمی نیاز دارید، ممکن است بخواهید دادهها را در یک پایگاه داده ذخیره کنید.
شروع یک جلسه PHP
یک جلسه با استفاده از تابع session_start()
شروع میشود.
متغیرهای جلسه با استفاده از متغیر جهانی PHP: $_SESSION
تنظیم میشوند.
حالا، بیایید یک صفحه جدید به نام “demo_session1.php” ایجاد کنیم. در این صفحه، یک جلسه PHP جدید شروع کرده و برخی از متغیرهای جلسه را تنظیم میکنیم:
<?php
// شروع جلسه
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// تنظیم متغیرهای جلسه
$_SESSION["favcolor"] = "سبز";
$_SESSION["favanimal"] = "گربه";
echo "متغیرهای جلسه تنظیم شدند.";
?>
</body>
</html>
توجه: تابع session_start()
باید اولین چیزی باشد که در سند شما قرار دارد. قبل از هر تگ HTML.
دریافت مقادیر متغیرهای جلسه PHP
در مرحله بعد، یک صفحه دیگر به نام “demo_session2.php” ایجاد میکنیم. از این صفحه، اطلاعات جلسهای را که در صفحه اول (“demo_session1.php”) تنظیم کردیم، دسترسی خواهیم داشت.
توجه داشته باشید که متغیرهای جلسه به طور فردی به هر صفحه جدید ارسال نمیشوند، بلکه از جلسهای که در ابتدای هر صفحه باز میشود (با session_start()
)، بازیابی میشوند.
همچنین توجه کنید که تمام مقادیر متغیرهای جلسه در متغیر جهانی $_SESSION
ذخیره میشوند:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// نمایش متغیرهای جلسه که در صفحه قبلی تنظیم شده بودند
echo "رنگ مورد علاقه " . $_SESSION["favcolor"] . " است.<br>";
echo "حیوان مورد علاقه " . $_SESSION["favanimal"] . " است.";
?>
</body>
</html>
راه دیگری برای نمایش تمام مقادیر متغیرهای جلسه برای یک جلسه کاربری، اجرای کد زیر است:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
چگونه کار میکند؟ چگونه میداند که من هستم؟
بیشتر جلسات یک کلید کاربری روی کامپیوتر کاربر تنظیم میکنند که چیزی شبیه به این است: 765487cf34ert8dede5a562e4f3a7e12
. سپس، هنگامی که یک جلسه در صفحه دیگری باز میشود، کلید کاربری را در کامپیوتر جستجو میکند. اگر تطابقی پیدا کند، به آن جلسه دسترسی پیدا میکند، در غیر این صورت، یک جلسه جدید شروع میکند.
تغییر مقدار متغیر جلسه PHP
برای تغییر یک متغیر جلسه، کافی است آن را دوباره تنظیم کنید:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// برای تغییر یک متغیر جلسه، کافی است آن را دوباره تنظیم کنید
$_SESSION["favcolor"] = "زرد";
print_r($_SESSION);
?>
</body>
</html>
حذف یک جلسه PHP
برای حذف تمام متغیرهای جلسه و نابود کردن جلسه، از session_unset()
و session_destroy()
استفاده کنید:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// حذف تمام متغیرهای جلسه
session_unset();
// نابود کردن جلسه
session_destroy();
?>
</body>
</html>
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام