شیء Session ASP

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

شیء Session

وقتی که شما یک برنامه را عمل می‌کنید، آن را باز می‌کنید، تغییراتی انجام می‌دهید و سپس آن را می‌بندید. این شبیه یک مکالمه (Session) است. کامپیوتر می‌داند که شما کی هستید. او می‌داند که شما در چه زمانی برنامه را باز و بسته کرده‌اید. اما در اینترنت یک مشکل وجود دارد: به دلیل اینکه آدرس‌های HTTP نمی‌توانند وضعیت را حفظ کنند، سرور وب نمی‌داند که شما کی هستید و چه کاری انجام داده‌اید.

ASP از طریق ایجاد یک کوکی منحصر به فرد برای هر کاربر این مشکل را حل کرده است. کوکی به سرور کاربر ارسال می‌شود که شامل اطلاعات قابل شناسایی کاربر است. این رابط به عنوان شیء Session شناخته می‌شود.

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

Session چه زمانی شروع می‌یابد؟

Session از چه زمانی شروع می‌شود؟

  • وقتی یک کاربر جدید یک فایل ASP درخواست می‌کند و فایل Global.asa از برنامه Session_OnStart استفاده می‌کند؛
  • وقتی یک مقدار در متغیر Session ذخیره می‌شود؛
  • وقتی یک کاربر یک فایل ASP درخواست می‌کند و Global.asa از طریق تگ <object> به منظور نمونه‌سازی یک شی از session استفاده می‌کند؛

Session چه زمانی پایان می‌یابد؟

اگر کاربر در مدت زمان مشخصی در برنامه درخواست یا صفحات را به‌روزرسانی نکند، session پایان می‌یابد. مقدار پیش‌فرض 20 دقیقه است.

اگر می‌خواهید زمان‌بندی timeout را طولانی‌تر یا کوتاه‌تر کنید، می‌توانید Timeout مشخصات.

در این مثال، زمان‌بندی 5 دقیقه‌ای برای زمان‌بندی session تنظیم شده است:

<%
Session.Timeout=5
%>

برای پایان‌دادن فوری session می‌توان از Abandon روش:

<%
Session.Abandon
%>

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

توجه:اگر از متغیرهای session استفاده می‌کنید، از ذخیره مقدارهای زیادی در آن خودداری کنید.

ذخیره و بازیابی متغیرهای session

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

در این مثال، مقدار "Donald Duck" به متغیر session به نام username اختصاص داده می‌شود و مقدار "50" به متغیر session به نام age اختصاص داده می‌شود:

<%
Session("نام کاربری")="دونالد کبک"
Session("سن")=50
%>

وقتی مقدار در متغیر session ذخیره شود، می‌تواند توسط هر صفحه‌ای از برنامه ASP استفاده شود:

خوش آمدید <%Response.Write(Session("نام کاربری"))%>

نتیجه این خط برنامه: "خوش آمدید دونالد کبک".

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

در مثال زیر، اگر رزولوشن نمایشگر کاربر پایین باشد، نسخه متنی صفحه باز می‌گردد:

<%If Session("screenres")="low" Then%> 
  این نسخه متنی صفحه است
<%Else%> 
  این نسخه چندرسانه‌ای صفحه است
<%End If%>

حذف متغیر جلسه

مجموعه contents شامل تمامی متغیرهای جلسه است.

می‌توانید از روش remove برای حذف متغیرهای جلسه استفاده کنید.

در مثال زیر، اگر مقدار متغیر جلسه "سن" کمتر از 18 باشد، متغیر جلسه "فروش" حذف می‌شود:

<%
If Session.Contents("سن")<18 then 
  Session.Contents.Remove("فروش")
End If 
%>

برای حذف تمامی متغیرهای جلسه، لطفاً از روش RemoveAll استفاده کنید:

<%
Session.Contents.RemoveAll()
%>

جستجوی مجموعه contents

مجموعه contents شامل تمامی متغیرهای جلسه است. می‌توانید با جستجوی مجموعه contents، متغیرهای ذخیره شده را مشاهده کنید:

<%
Session("نام کاربری")="دونالد کبک"
Session("سن")=50
dim i
برای هر i در Session.Contents
  Response.Write(i & "<br />")
Next
%>

نتیجه:

نام کاربری
سن

اگر می‌خواهید تعداد عناصر مجموعه contents را بدانید، می‌توانید از ویژگی count استفاده کنید:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("متغیرهای جلسه: " & j)
برای i=1 تا j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>

نتیجه:

متغیرهای جلسه: 2
دونالد کبک
50

مجموعه StaticObjects را مرور کنید

می‌توان از طریق حلقه بر روی مجموعه StaticObjects، برای مشاهده مقادیر تمام اشیاء ذخیره شده در شیء session، جستجو کرد:

<%
dim i
برای هر i در Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>