Session‌های PHP

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

متغیرهای Session PHP

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

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

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

شروع جلسه PHP

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

نوٹ:فونکشن 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>

خروجی:

Pageviews=1

در مثال زیر، ما یک شمارنده سادہ page-view ایجاد کردیم۔isset() فونکشن "views" متغیر کو موجود یا نہ موجود کا پتہ لگانا اور اگر موجود ہو تو شمارنده کو مجموعی طور پر بڑھاتا ہے۔ اگر "views" موجود نہیں ہو تو "views" متغیر کو بنایا جاتا اور اس کو 1 میں رکھا جاتا:

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

سیشن ختم کرنا

اگر آپ چننے والی سیشن ڈاٹا کو حذف کرنا چاہتے ہیں تو unset() یا session_destroy() فونکشن استعمال کرسکتے ہیں。

unset() فونکشن کا استعمال کیا جاتا ہے تاکہ مخصوص سیشن متغیر کو آزاد کردیاجائے:

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

آپ سیشن_destroy() فونکشن کے ذریعے سیشن کو پورا طور پر ختم بھی کرسکتے ہیں:

<?php
session_destroy();
?>

نوٹ:session_destroy() سیشن کو ریست می کرے گا، آپ تمام ذخیرہ شدہ سیشن ڈاٹا کو جاچکا تھا.