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


متغیرهای session در PHP

وقتی شما با یک برنامه کاربردی کار می کنید، آنرا را باز می کنید، یکسری تغییرات انجام داده و سپس آنرا می بندید. به این فرآیند یک session یا جلسه کاری می گویند. کامپیوتر می داند که شما کی هستید. همچنین می داند که چه وقت برنامه را شروع کرده و چه وقت پایان داده اید. ولی در اینترنت یک مشکل وجود دارد: وب سرور نمی داند شما کی هستید و چه می خواهید انجام دهید. چون آدرس های HTTP حال را نگه نمی دارند ، در واقع پروتکل HTTP بصورت state-less عمل می کند.

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

session ها با ایجاد یک شناسه یکتا (UID) برای هر مراجعه کننده و ذخیره متغیرها بر اساس UID کار می کند. UID خودش در یک کوکی ذخیره شده و یا با URL جابجا می شود.

 


شروع بکار Session در PHP

قبل از اینکه بتوانید در sessioتان اطلاعاتی ذخیره کنید، باید آنرا شروع کنید.

توجه : تابع ()session_start باید قبل از تگ <html> قرار گیرد:

<?php session_start(); ?>

<html>
<body>

</body>
</html>

کد فوق session مربوط به کاربر را در سرور ثبت نام خواهد کرد، به شما اجازه خواهد داد تا اطلاعات کاربر را ذخیره کنید و یک UID به session کاربر تخصیص خواهد داد.


ذخیره سازی متغیرهای session

روش صحیح برای ذخیره و بازیابی متغیرهای session استفاده از متغیر SESSION_$ است:

<?php
session_start();
// store session data
$_SESSION[‘views’]=1;
?><html>
<body>

<?php
//retrieve session data
echo “Pageviews=”. $_SESSION[‘views’];
?>

</body>
</html>

خروجی:

Pageviews=1

در مثال زیر یک شمانده تعداد مراجعات به صفحه ساده ایجاد کرده ایم. تابع ()isset بررسی می کند که متغیر “views” از قبل وجود دارد و ست شده است. اگر “views” از قبل وجود داشته باشد، آنرا یک واحد اضافه کرده و گرنه یک متغیر “views” ایجاد کرده و آنرا مقدار ۱ می دهد.

<?php
session_start();if(isset($_SESSION[‘views’]))
$_SESSION[‘views’]=$_SESSION[‘views’]+1;
else
$_SESSION[‘views’]=1;
echo “Views=”. $_SESSION[‘views’];
?>

 


از بین بردن session

برای از بین بردن بعضی ار داده های session می توان از تابع unset() یا تابع ()session_destroyاستفاده کرد.

تابع ()unset برای از بین بردن متغیرهای مشخصی از session استفاده می شود:

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

می توانید برای از بین بردن کامل session تابع ()session_destroy را فراخوانی کنید:

<?php
session_destroy();
?>

توجه: ()session_destroy کل session شما را ریست کرده و همه داده های ذخیره شده در session را از دست خواهید داد.

نمایش قابل چاپ