Sessions

از موتو کد، دانشنامهٔ برنامه‌نویسی
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
۱تاریخ و زمان
۲دستور Include
۳مدیریت فایل
۴باز کردن/خواندن فایل
۵ساختن/نوشتن فایل
۶آپلود فایل
۷کوکی‌ها
۸Sessions
۹فیلترها
۱۰فیلترهای پیشرفته
۱۱JSON در PHP
شیء گرایی در PHP
پایگاه داده MySQL
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP

یک جلسه (session) یک راه برای ذخیره‌سازی اطلاعات (درون متغیرها) برای استفاده درون چندین صفحه مختلف است.[۱]

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

یک جلسه (session) در PHP چیست؟

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

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

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

نکته: اگر شما به یک منبع ذخیره دائمی احتیاج دارید، شما می‌بایست اطلاعات را درون یک پایگاه داده ذخیره کنید.

ایجاد یک جلسه در PHP

یک جلسه به وسیله تابع 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.

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

در مرحله بعدی، ما یک صفحه دیگر به نام "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>


مشاهدهٔ نتیجه


Session چطور کار می کند؟ چطور Session مرا شناسایی می کند؟

بیشتر Sessions یک مقدار کلید روی رایانه کاربر قرار می‌دهند که به صورت زیر شبیه است:

765487cf34ert8dede5a562e4f3a7e12. سپس، زمانی که یک جلسه روی صفحه دیگری باز می‌شود، رایانه کاربر برای پیدا کردن مقدار کلید بررسی می‌شود. در صورتی که مقدار کلید متناظری یافت شود، به جلسه دسترسی پیدا می‌کند، در غیر اینصورت، یک جلسه جدید ایجاد می‌کند.

ویرایش یک متغیر جلسه در PHP

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

مثال

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

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

</body>
</html>


مشاهدهٔ نتیجه


حذف یک جلسه در PHP

برای حذف تمامی متغیرهای جلسه‌های سراسری و حذف جلسه، از تابع 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>


مشاهدهٔ نتیجه


تمرینات PHP

Time2wait.svg ساخت نمونه مثال این بخش در دست اقدام است.



منابع آموزشی