PHP:جلسات در PHP

از ویکی کد
پرش به ناوبری پرش به جستجو

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

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

یک جلسه (به انگلیسی: session) در PHP چیست؟

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

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

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


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

یک جلسه به وسیله تابع session_start() ایجاد می‌شود.

متغیرهای جلسه‌ها با متغیر سراسری $_SESSION در PHP تنظیم می‌شوند.

حال، اجازه دهید که یک صفحه جدید به نام "demo_session1.php" ایجاد کنیم. در این صفحه، ما یک جلسه تعریف می‌کنیم و یک سری متغیر جلسه را مقداردهی می‌کنیم:

مثال

 1 <?php
 2 // Start the session
 3 session_start();
 4 ?>
 5 <!DOCTYPE html>
 6 <html>
 7 <body>
 8 
 9 <?php
10 // Set session variables
11 $_SESSION["favcolor"] = "green";
12 $_SESSION["favanimal"] = "cat";
13 echo "Session variables are set.";
14 ?>
15 
16 </body>
17 </html>


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

در مرحله بعدی، ما یک صفحه دیگر به نام "demo_session2.php" ایجاد می‌کنیم. برای این صفحه، ما به اطلاعات جلسه که درون صفحه اول ("demo_session1.php") تنظیم کرده‌ایم، دسترسی پیدا می‌کنیم.

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

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

مثال

 1 <?php
 2 session_start();
 3 ?>
 4 <!DOCTYPE html>
 5 <html>
 6 <body>
 7 
 8 <?php
 9 // Echo session variables that were set on previous page
10 echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
11 echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
12 ?>
13 
14 </body>
15 </html>

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

مثال

 1 <?php
 2 session_start();
 3 ?>
 4 <!DOCTYPE html>
 5 <html>
 6 <body>
 7 
 8 <?php
 9 print_r($_SESSION);
10 ?>
11 
12 </body>
13 </html>


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

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

مثال

 1 <?php
 2 session_start();
 3 ?>
 4 <!DOCTYPE html>
 5 <html>
 6 <body>
 7 
 8 <?php
 9 // to change a session variable, just overwrite it
10 $_SESSION["favcolor"] = "yellow";
11 print_r($_SESSION);
12 ?>
13 
14 </body>
15 </html>

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

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

مثال

 1 <?php
 2 session_start();
 3 ?>
 4 <!DOCTYPE html>
 5 <html>
 6 <body>
 7 
 8 <?php
 9 // remove all session variables
10 session_unset();
11 
12 // destroy the session
13 session_destroy();
14 ?>
15 
16 </body>
17 </html>

تمرینات PHP

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

منابع آموزشی