آموزش Session ها در php

1396/7/19 علیرضا حاتمی نیا 1179

سلام دوستان. به آموزش php امروز خوش آمديد. در جلسه قبل با نحوه اتصال و استفاده از mysql توسط mysqli آشنا شديد. در اين جلسه با آموزش session در php در خدمت شما هستيم. 

Session در php چيست ؟

در جلسات قبل دانستيد که متغيرها اين امکان را به شما مي دهند تا مقداري را در آنها ذخيره کنيد و در طول برنامه از آن ها استفاده کنيد. اما محدوديتي که براي متغيرها وجود دارد اين است که فقط در همان صفحه قابل شناسايي و استفاده هستند و اگر به صفحه ديگري از همان سايت را بارگزاري کنيد آن متغير براي برنامه ديگر قابل شناسايي نخواهد بود. بياييد با يک مثال ساده اين قضيه را بيشتر روشن کنيم. فرض کنيد درون وبسايتي نام کاربري و رمز عبور خود را وارد نموده و به اصطلاح لاگين کرده ايد. پس از لاگين هر صفحه اي که شما در آن وبسايت بارگزاري مي کنيد مرورگر شما را شنا سايي مي کند و به شما اجازه دسترسي از آن قسمت را مي دهد و مجدد از شما نام کاربري و رمز عبور را درخواست نمي کند.  حتي نام شما را در هر صفحه پس از لاگين کردن مي شناسد و نام شما را چاپ مي کند. اين دقيقا مفهوم Session مي باشد. Session ها در php متغيرهايي هستند که در طول برنامه و با هر بار بارگزاري صفحه اي ديگر از بين نمي روند مگر با بستن مرورگر. البته به صورت پيش فرض با بستن مرورگر Sessionها از بين مي روند که با درج دستوراتي مي توانيد آنها را نگه داريد. 
Session ها و کوکي ها شايد به نوعي شبيه يکديگر باشند ولي تفاوت هاي زيادي با يکديگر دارند. (در جلسات بعدي با کوکي ها آشنا خواهيد شد) به طور مختصر کوکي ها داده ها را روي کامپيوتر شما ذخيره مي کنند که اين امنيت وبسايت شما را به شدت کاهش مي دهد. اين در حالي ست که session ها روي سرور ذخيره مي شوند. کوکي ها نسبيت به session ها منابع کمتري از سرور را مصرف مي کنند. کوکي ها جهت استفاده مي بايست توسط کاربر تاييد شوند ولي در Session چينين چيزي وجود ندارد. معمولا از کوکي ها زماني استفاده مي شود که اطلاعات در امنيت چندان مهم نباشند و حجم داده هاي کمي را ذخيره کنند. 
روند کار session ها به اين صورت است که پس از ايجاد session يک شناسه يا ID به نام  Session ID به صورت رشته تصادفي و با الگويي امن ايجاد شده و آن را در سرور به صورت فايل و در کامپيوتر کاربر به صورت کوکي با نام PHPSESSID  ذخيره مي کند و سپس با مراجعات بعدي کاربر توسط آن ID اقدام به پيدا کردن session آن روي سرور مي کند. 

ايجاد يک Session 

قبل از کار با توابع  (session مانند تعريف يک متغير از نوع session يا حذف يک session و يا مديريت session هاي قبلي ( در يک برنامه شما مي بايست يک session را توليد يا آغاز کنيد. يک جلسه يا يک session با تابع session_start() ساخته يا شروع مي شود. توصيه مي  شود که اين تابع را در ابتدايي ترين خط کدهاي خود حتي کدهاي html بنويسيد. کليه متغيرهاي Session توسط متغير سراسري $_SESSION تنظيم مي گردند. 
در مثال زير در فايلي با نام myCars1.php يک session را شروع مي کنيم و در ادامه دو متغير از نوع session تعريف مي کنيم.

<?php
// شروع يک جلسه يا session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// تعريف متغيرهايي از نوع session
$_SESSION["carName"] = "Samand";
$_SESSION["carColor"] = "red";
echo "the name is: " . $_SESSION[“carName”] . "<br>";
echo "the color is: " . $_SESSION[“carColor”];

?>
</body>
</html>

خروجي کدهاي بالا به صورت زير مي باشد : 

the name is: Samand
the color is: red

دسترسي به session ساخته شده در صفحات ديگر

حال فرض کنيد قصد داريم به دو متغير session ساخته شده در فايل myCars1.php در صفحه اي با نام myCars2.php دسترسي داشته باشيم. کافي ست به شکل زير عمل کنيم.

<?php
// شروع يک جلسه يا session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// تعريف متغيرهايي از نوع session
echo "the name is: " . $_SESSION["carName"] . "<br>";
echo "the color is: " . $_SESSION["carColor"];

?>
</body>
</html>

خروجي کدهاي بالا به صورت زير مي باشد : 

the name is: Samand
the color is: red

همانطوري که مشاهده کرديد ابتدا session_start شد و سپس فقط دو متغير session ساخته شده در فايل اول را چاپ کرديم. با اينکه در صفحه ديگري بوديم ولي خروجي مشابهي داشتيم. 

اصلاح يا به روز رساني متغير هاي session ايجاد شده
براي تغيير مقدار متغيير session  هاي از پيش ساخته شده کافي ست که مقدار آن را دوباره تعيين کنيد.

<?php
// شروع يک جلسه يا session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// تعريف متغيرهايي از نوع session
$_SESSION["carName"] = "Peugeot";
$_SESSION[“carColor”] = "black";
echo "the name is: " . $_SESSION["carName"] . "<br>";
echo "the color is: " . $_SESSION["carColor"];

?>
</body>
</html>

خروجي کدهاي بالا به صورت زير مي باشد : 

the name is: Peugeot
the color is: black

از بين بردن session

جهت حذف کليه متغيرهاي session ساخته شده بايستي از session_unset() و براي از بين بردن Session بايد از session_destroy() استفاده کنيد. 
 

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// حذف کليه متغيرهاي session
session_unset(); 

// ار بين بردن session 
session_destroy(); 
?>

</body>
</html>

 

 

کلمات کلیدی

آموزش php
علیرضا حاتمی نیا
طراح و برنامه نویس وب
طراحی وبسایت های واکنش گرا
طراحی و پیاده سازی سیستم مدیریت محتوا
سئو و بهینه سازی سایت