Session‌های PHP

متغیرهای session PHP برای ذخیره اطلاعات مربوط به جلسه کاربر یا تغییر تنظیمات جلسه کاربر استفاده می‌شوند. اطلاعات ذخیره شده در متغیرهای session مربوط به یک کاربر خاص است و می‌تواند در تمام صفحات برنامه استفاده شود.

متغیرهای Session PHP

وقتی یک برنامه را اجرا می‌کنید، آن را باز می‌کنید، تغییراتی انجام می‌دهید و سپس بستش می‌کنید. این بسیار شبیه یک جلسه است. کامپیوتر می‌داند که شما کی برنامه را باز کرده‌اید و کی آن را بسته‌اید. اما در اینترنت، مشکلی وجود دارد: سرور نمی‌داند که شما کی هستید و چه کاری انجام می‌دهید، این به دلیل اینکه آدرس‌های HTTP نمی‌توانند وضعیت را حفظ کنند.

با ذخیره اطلاعات کاربر در سرور به منظور استفاده بعدی، PHP session این مشکل را حل می‌کند (مثلاً نام کاربر، محصولات خریداری شده و غیره). اما اطلاعات جلسه موقتی هستند و پس از ترک وب‌سایت توسط کاربر حذف می‌شوند. اگر نیاز به ذخیره اطلاعات دائمی دارید، می‌توانید داده‌ها را در دیتابیس ذخیره کنید.

مکانیزم کار Session به این صورت است: برای هر بازدیدکننده یک id منحصر به فرد (UID) ایجاد می‌شود و متغیرها بر اساس این UID ذخیره می‌شوند. UID در کوکی ذخیره می‌شود یا از طریق URL منتقل می‌شود.

شروع جلسه PHP

قبل از ذخیره اطلاعات کاربر در session PHP، ابتدا باید جلسه را شروع کنید.

Note:تابع session_start() باید قبل از برچسب <html> قرار گیرد:

<?php session_start(); ?>
<html>
<body>
</body>
</html>

کد بالا به سرور جلسه کاربر را ثبت می‌کند تا بتوانید اطلاعات کاربر را ذخیره کنید و همچنین یک UID برای جلسه کاربر اختصاص می‌دهد.

ذخیره متغیرهای Session

درست‌ترین روش برای ذخیره و بازیابی متغیرهای session، استفاده از متغیر PHP $_SESSION است:

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
// retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>

Output:

Pageviews=1

In the following example, we create a simple page-view counter. The isset() function checks if the "views" variable has been set. If the "views" variable is set, we increment the counter. If "views" does not exist, we create the "views" variable and set it to 1:

<?php
session_start();
if(isset($_SESSION['views']))
  $_SESSION['views']=$_SESSION['views']+1;
else
  $_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

Terminate Session

If you want to delete some session data, you can use the unset() or session_destroy() function.

The unset() function is used to release the specified session variable:

<?php
unset($_SESSION['views']);
?>

You can also completely terminate the session using the session_destroy() function:

<?php
session_destroy();
?>

Note:session_destroy() will reset the session, and you will lose all stored session data.