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>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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