وب آکادمی

مرجع آموزش طراحی و برنامه نویسی وب

گام نهم – کار با جلسات (سشن ها)

دسته بندی:آموزش گام به گام php تاریخ انتشار: 6 مهر 1397 برچسب ها : برچسب‌ها:, , ,

جلسه یک راه برای ذخیره اطلاعات (در متغیرها) است که در چندین صفحه استفاده می شود.

بر خلاف کوکی، اطلاعات بر روی کامپیوتر کاربر ذخیره نمی شود.

جلسه چه هست؟

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

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

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

شروع یک جلسه در پی اچ پی

جلسه با تابع session_start  آغاز می شود.

متغیرهای جلسه با متغیر سراسری$ _SESSION در PHP تعیین می شوند:

حالا، یک صفحه جدید به نام “demo_session1.php” ایجاد می کنیم . در این صفحه، یک جلسه را شروع گرده  و برخی از متغیرهای جلسه را تنظیم می کنیم:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>

توجه : تابع session_start  باید اولین چیزی باشد(پیش از هر تگ های HTML) که در سند شما وجود دارد.

دریافت مقادیر متغیرهای جلسه پی اچ پی

بعد،  یک صفحه دیگر به نام “demo_session2.php” ایجاد می کنیم. از این صفحه، به اطلاعات جلسه که در صفحه اول (“demo_session1.php”) تنظیم میکنیم، دسترسی خواهیم داشت.

توجه داشته باشید که متغیرهای جلسه به صورت جداگانه به هر صفحه جدید منتقل نمی شوند، بلکه از جلسه ای که در ابتدای هر صفحه باز می شود (session_start ) بازیابی می شود.

همچنین توجه داشته باشید که تمام متغیرهای جلسه متغیر در متغیر $ _SESSION سراسری ذخیره می شوند:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>

راه دیگری برای نشان دادن تمام متغیرهای جلسه برای یک جلسه کاربر، اجرای کد زیر است:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>

سشن چگونه کار می کند؟ چطور می دانم که من هستم؟

اکثر جلسات یک کلید کاربر بر روی کامپیوتر کاربر ایجاد می کند که به نظر می رسد چیزی شبیه به این است: 765487cf34ert8dede5a562e4f3a7e12. سپس، هنگامی که جلسه در یک صفحه دیگر باز می شود، کامپیوتر را برای یک کلید کاربر اسکن می کند. اگر یک تطبیق وجود داشته باشد، به آن جلسه دسترسی پیدا می کند، اگر نه، یک جلسه جدید شروع می شود.

 

متغیر پی اچ پی پی اچ پی را تغییر دهید

برای تغییر یک متغیر جلسه، فقط آن را بازنویسی کنید:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>

یک جلسه پی اچ پی را از بین ببرید

برای حذف همه متغیر های جلسه سراسری  و از بین بردن جلسه، از توابع  session_unset و session_destroy استفاده کنید:

مثال:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هفده − دوازده =