نشست یا session در PHP

در برنامه هایی که روی سیستم عامل خود با آنها کار میکنید، سیستم عامل و برنامه میداند که شما چه زمانی برنامه را باز کرده، چه کارهایی انجام داده و چه زمانی آنرا می بندید. همچنین اینکه شما چه کسی هستید را نیز متوجه میشود. برای ایجاد چنین ویژگی هایی در برنامه های تحت وب، می بایست از نشست ها (سشن یا session) استفاده کرد.

نشست یا جلسه در PHP

 

نشست یا session چیست ؟

در کاربردهای معمولی برنامه ها در سیستم عامل مورد استفاده، برنامه شما را شناخته و میداند که در حال انجام چه کارهایی هستید؛ به این ویژگی دارای وضعیت (state) بودن برنامه میگویند.

اما در فضای اینترنت و هنگامی که در حال تعامل با یک برنامه تحت وب هستید، به دلیل اینکه پروتکل مورد استفاده از وب (پروتکل هایی نظیر HTTP) تماماً بدون وضعیت (stateless) هستند و به عبارتی مرورگر هیچ اطلاعاتی از شما برای سرور سایت ارسال نمیکند، تشخیص و متمایز کردن کاربرانی که درخواستی را به سمت سرور ارسال میکنند ممکن نیست.

برای حل چنین مسائلی و امکان تشخیص و تمایز کاربران از یکدیگر، میتوان از نشست (جلسه یا session) در برنامه های تحت وب استفاده کرد.

در زبان برنامه نویسی PHP نیز میتوانیم به راحتی با session ها کار کرده و اطلاعات مورد نیاز و مختص هر کاربر را نگهداری کنیم.

به صورت خیلی ساده کاربرد session ها در استفاده اطلاعات و مشخصات کاربر در صفحات مختلف یک سایت است. این اطلاعات در هر سایت و برای هر کاربر متفاوت بوده و تا زمانی که کاربر صفحه یا صفحاتی از آن سایت را باز نگه دارد، آن اطلاعات نگهداری خواهد شد.

 

session ها چگونه کار میکنند ؟

در اصل session ها به صورت یک فایل موقت بر روی سرور قرار میگیرند و در این فایل ها اطلاعات و متغیرهایی که نیاز است ذخیره میشود. این متغیرها در تمام صفحات سایت در دسترس است.

هنگامی که یک نشست شروع به کار میکند، هسته PHP یک شناسه (identifier) منحصر به فرد برای نشست ایجاد شده، در نظر میگیرد. این شناسه به صورت یک رشته تصادفی hex (مانند ۷b0325e9520bd35c093229164d5e1980) می باشد.

حال یک cookie با نام PHPSESID حاوی شناسه تخصیص یافته، برای کاربر ارسال میشود و در هر درخواست از طرف کاربر، به سمت سرور فرستاده میشود.

هنگامی که اسکریپت PHP میخواهد یک متغیر session را بررسی کند، به صورت خودکار، شناسه ارسال شده در کوکی را در فایل های موقت مربوط به نشست ها جستجو میکند و پس از پیدا کردن فایل، متغیر مربوطه را میخواند.

پس از اینکه کاربر آخرین صفحه برنامه تحت وب را ببندد، نشست ایجاد شده خاتمه می یابد. سرور نیز پس از گذشت یک زمان مشخص، session و فایل آنرا حذف خواهد کرد.

 

شروع یک session یا نشست

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

پیشنهاد میشود تابع session_start() را در ابتدای صفحه مورد نظر در برنامه فراخوانی کنید تا مشکل خاصی به وجود نیاید!

 

متغیرهای نشست در یک متغیر سراسری (global) آرایه ای به نام $_SESSION قرار میگیرند؛ به طوری که ایندکس آرایه مشخص کننده نام متغیر استفاده شده در نشست است.

فرض کنید میخواهیم یک نشست ایجاد کرده و متغیری به نام user_id که شامل شناسه کاربر در برنامه است را نگهداری کند. به قطعه کد زیر توجه کنید.

 

حال اگر در صفحه دیگری از برنامه قطعه کد زیر را قرار داده و بعد از باز کردن صفحه قبلی، کد زیر را اجرا کنیم، خواهیم دید که عدد ۲۱ به عنوان خروجی نشست نمایش داده میشود.

 

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

برای اینکه بررسی کنیم آیا یک متغیر در نشست ما تعریف شده یا خیر و به نوعی از بروز خطاهای ناخواسته جلوگیری کنیم، به راحتی میتوانیم از تابع isses() استفاده کرده و نشست مورد نظر را به عنوان ورودی به آن دهیم.

در صورتی که متغیر session تعریف شده باشد، مقدار true و در غیر اینصورت مقدار false را به عنوان خروجی تابع خواهیم داشت.

فرض کنید فرآیند تعریف نشست user_id را در هنگام ورود کاربر به سیستم انجام میدهیم. در صورتی که بخواهیم بررسی کنیم آیا کاربر فرآیند ورود به سیستم را انجام داده یا نه، میتوان به صورت زیر عمل کرد.

 

به همین راحتی میتوان فرآیندهای مختلف و مطمئنی را با استفاده از نگهداری اطلاعات مورد نیاز از طریق session ها انجام داد.

 

تغییر مقدار متغیرهای نشست (session)

برای تغییر مقدار متغیر یک نشست، میتوانیم به راحتی آنرا بازنویسی (overwrite) کنیم!

فرض کنید یک متغیر به نام balance در نشست خود ایجاد کرده ایم و مقداری به آن تخصیص پیدا کرده است. اکنون میخواهیم مقدار جدیدی برای آن تغریف کنیم. به سادگی، همانند کد زیر عمل خواهیم کرد.

 

حذف PHP session

حذف یک متغیر در session

برای آنکه یک متغیر در نشست خود را حذف کنیم، از تابع unset() استفاده خواهیم کرد. این تابع، خانه یک آرایه را گرفته و آنرا از آرایه حذف میکند. پس برای حذف یک متغیر، می بایست متغیر نشست را به عنوان ورودی به تابع unset بدهیم.

 

حذف تمام متغیر های session

فرض کنید در یک نشست چندین و چند متغیر مختلف را استفاده کرده اید. اگر بخواهیم تمام آنها را حذف کنیم، شاید همه متغیرها را یکی یکی به ورودی تابع unset بدهیم!!!

اما راه بسیار ساده تری برای حذف تمام متغیرهای نشست برقرار شده وجود دارد و آن، صدا زدن تابع session_unset() است.

تابع session_unset() ورودی خاصی نگرفته و پس از صدا زدن آن، تمام متغیرهای درون نشست ما حذف خواهند شد.

 

از بین بردن نشست (session) در PHP

با صدا زدن تابع session_destroy() کل نشست ایجاد شده به همراه تمامی متغیرهای آنرا حدف کرده و از بین میبریم.

 



[ برچسب ها ] : , , , , ,
ارسال شده در : بخش کامپیوتر
نظر شما در مورد اين پست چيست ؟

دیدگاه خود را به ما بگویید.

 
 
  دکتری تخصصی برق الکترونیک
طراح مدارهای الکترونیکی
برنامه نویس انواع میکروها
مشاوره و اجرای لینک های وایرلس
پیاده سازی سیستم های مبتنی بر شبکه
E_mail: electronic@sabzelco.ir
Tel: 09150462401
توسعه دهنده برنامه های سمت سرور

طراحی و برنامه نویسی سایت و پرتال های حرفه ای

E_mail: computer@sabzelco.ir
Tel: 09371974233