آشنایی با مفاهیم Session

جلسات اینترنتی

همیشه برای مدیر یک سایت این موضوع اهمیت دارد که بداند در زمان مورد نظرش چه کسانی در سایت هستند. این موضوع از نظر برنامه‌نویسی نیز قابل اهمیت است. برای مثال شما وارد یک فروشگاه اینترنتی می‌شوید، سپس در بخش ثبت‌نام اطلاعات خود را وارد می‌کنید و بعد از این که به شما پیغام خوشامدگویی داده می‌شود، شما به عنوان یک کاربر معتبر شناخته می‌شوید. در این مرحله اقدام به خرید می‌کنید و از سایت خارج می‌شوید. دراین روند سوالاتی وجود دارد که قابل تامل است. اولین و مهم‌ترین سوالی که مطرح می‌شود این است که آیا اگر در سایت عضو نشویم می‌توانیم خرید کنیم؟ یعنی برای خرید حتما باید عضو بود؟ جواب بله است.
کد خبر: ۴۲۲۷۲۲

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

اما راه‌حل این است که خریداران از نظر شما معتبر باشند. این گونه شما مطمئنا با حجم کمتری تقاضا روبه‌رو خواهید شد و مدیریت آنها ساده‌تر از حالت قبلی است. می‌دانید که HTTP یک پروتکل State - less ‌‌است و در هر لحظه نمی‌تواند به حالت قبلی برگردد. فرض کنید شما وارد سایت شده‌اید و مورد اعتبارسنجی نیز قرار گرفته‌اید، بعد از این که به صفحه اصلی رفتید و ‌خواستید خرید کنید، این مساله را که شما معتبرید یا نه، چگونه می‌توان مدیریت کرد؟

باید زمانی که لاگین کرده‌اید، اطلاعات شما در جایی ذخیره شود و در هر بار که نیاز به این اطلاعات بود به محل ذخیره شده آنها رجوع شود. اما بحث دیگر این که آیا این اطلاعات باید برای همیشه ذخیره شوند؟ خیر. اگر روزانه ۱۰۰ نفر به سایت شما وارد شوند و اطلاعات آنها در هر بار ورود ۱۰ کیلوبایت باشد، و هر کاربر ۱۰ بار در سایت وارد شود، در آخر شب شما با حجمی برابر ۱۰ x۱۰x ۱۰۰ روبه‌رو خواهید بود و بعد از مدت ۱۰۰ روز این اطلاعات برابر یک گیگابایت خواهد شد. خب به نظر شما این منطقی است؟ خیر، اما راه‌حل چیست؟

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

اما باز هم مشکل وجود دارد. اگر مشتری از سایت خارج نشد، چه اتفاقی می‌افتد؟ باز اطلاعات ذخیره می‌شود و هیچ وقت نیز پاک نمی‌شود؟ در این صورت راه‌حل این است که ما 2 شرط بگذاریم یا کاربر خودش از سایت خارج شود یا این که بعد از مدتی که ما تعیین می‌کنیم، اطلاعات به صورت خودکار پاک شده و کاربر در سایت به عنوان یک کاربر غیرمعتبر شناخته شود.

چگونه اطلاعات را ذخیره یا مقادیر آن را بازیابی کنیم؟

اینجاست که بحث Session‌ها مطرح می‌شود. Session‌ها یا همان جلسه‌ها زمانی که کاربر سایتی را باز می‌کند برای آن ایجاد می‌شود و زمانی که مرورگر خود را ببندد نیز به صورت خودکار از بین می‌رود. اما Session چیست؟ Session یک ساختار داده Key‌/‌Value‌ دارد، یعنی هر عنصر یک شناسه و یک مقدار دارد. مقدار آن هر چیزی می‌تواند باشد (این مورد به زبان و سکوی نرم‌افزاری بستگی دارد که در آن مشغول توسعه وب سایت هستید). متغیر Session به صورت پیشفرض در حافظه ذخیره می‌شود. اما آیا ذخیره کردن آن در حافظه صحیح است ؟ خیر، چرا که ممکن است حجم کاربران بیش از حد شود و در آن شرایط ممکن است حافظه سرور امکان نگهداری آنها را نداشته باشد.

اما چارچوب‌ کاری امکان ذخیره سازی مقادیر سشن را در جاهایی جز حافظه سرور به شما می‌دهند. برای مثال شما می‌توانید Session را در پایگاه داده ذخیره‌سازی کنید.

اما نمونه استفاده از Session‌ها در asp.net. در برنامه‌هایی که با asp.net توسعه داده می‌شود، یک فایل است به نام Global.asax . در این ‌فایل 2 رخداد وجود دارد یکی Session_start و دیگری Session_End که اولی زمانی اتفاق می‌افتد که یک سشن آغاز می‌شود و آخری هنگامی که Session به پایان می‌رسد (اطلاعات آن پاک می‌شود).

در صورتی یک Session‌ تمام می‌شود که یا کاربر مرورگر خود را می‌بندد یا این که زمان آن به پایان می‌رسد. در تنظیمات سرور شما می‌توانید با مقداردهی ‌session time - out‌‌‌ زمان اعتبار یک Session‌ را مشخص کنید.

خواندن و نوشتن در Session به صورت زیر است:

Session[“Username”] = “JameJam”;

Response.Write(Session[“Username”]);

امیر بهاءالدین سبط‌الشیخ

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها