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>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.