مشاهده منبع مطلب به زبان اصلی

ما دو جا از واژه اپلیکیشن استفاده می کنیم :

اول : به سایتی که در ان حتی یکی از صفحاتش از نوع asp باشد و کاربر در حال مشاهده ان است اپلیکیشن گفته می شود

 

دو : زمانیکه می خواهیم اطلاعات تمام افرادی را در سرور نگه داریم که در حال حاضر در حال بازدید از سایت Asp ما هستند از شی اپلیکیشن استفاده می کنیم

از اشیای Application و session استفاده می کنیم برای :

 

به اشتراک گذاری متغیرها بین چندین صفحه وب سایت

 

جالبه !

 

همیشه می گفتیم اگر متغیری در برنامه بصورت عمومی تعریف بشه می توان در تمام زیر برنامه های همان برنامه ازش استفاده کرد

 

اما متغیرهای اپلیکیشن و جلسه عمومی تر هستند یعنی حتی در بین چند فایل به اشتراک گذاشته می شوند

 

 

کی از متغیرهای فوق عمومی Application  استفاده کنیم ؟

جواب : زمانیکه بخواهیم متغیرهای عمومی بین چند کاربر مختلف که دارند از سایت ما همزمان دیدن می کنند به اشتراک گذاشته شود

 

کی از متغیرهای فوق عمومی sessionاستفاده کنیم ؟

جواب : زمانیکه بخواهیم فقط برای یک کاربر ،  متغیرهای عمومی  را بین صفحات سایت به اشتراک بگذاریم

 

 

فکر کنید همزمان صدها کاربر در حال مشاهده سایت شما هستند . خوب ! سرور از کجا بفهمه هر کاربر کیه و داره چکار می کنه و چی می خواد ؟

مثلا  مهدی صفحه دوم سایت را تقاضا می کنه حال انکه جمشید داره فرمی را در همان سایت پر می کنه

چطوری اینها با هم قاطی نمیشن ؟

جواب : با استفاده از اپلیکیشن

 

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

و می توان از این متغیرها در تمام صفحات این application که کاربر درحال کار با  انهاست استفاده کرد

 
 
زمان شروع جلسه
 یک جلسه و اپلیکیشن زمانی اغاز می شود که :
  •  کاربر یک صفحه از سایت شما را بخواهد ببیند و در ان صفحه دستور ایجا د و مقدار دادن به متغیر عمومی جلسه  یا اپلیکیشن را نوشته باشید
  •  هر صفحه ای از وب سایت را که کاربر باز کند و در ان دستوری نوشته باشید که از مقدار موجود در متغیر جلسه یا اپلیکیشن استفاده کند ، در صورتیکه قبلا جلسه یا اپلیکیشن ایجاد نشده باشد ،ان جلسه ایجاد خواهد شد
زمانیکه  اولین کاربر ، فایلی از وب سایت شما را  که حاوی دستورات شی اپلیکیشن است ، باز کند رویداد Application_OnStart روی می دهد . فعلا با این رویداد کاری نداریم
زمانیکه  یک کاربر ، فایلی از وب سایت شما را باز کند که در ان متغیر جلسه ایجاد شده یا استفاده شده رویداد  Session_OnStart  روی می دهد. فعلا با این رویداد کاری نداریم
زمان پایان جلسه
  • زمانیکه زمان انقضای جلسه تمام شود ، رویداد  Session_OnEnd روی می دهد  بطور پیش فرض جلسه این زمان 20 دقیقه بعد از اخرین صفحه ای است که کاربر از اپلیکیشن باز کرده است . برای تغییر این زمان می توان از Session.Timeout استفاده کرد یا رجیستری را ویرایش نمود 
  • از رویداد   Application_OnEnd می توان در زمان خاتمه طول عمر  شی اپلیکیشن  استفاده کرد و در ا ن دستورات حذف اشیا و متغیرهای عمومی اپلیکیشن را نوشت . مشکل اینجاست که این رویداد فقط زمانی روی می دهد که سرور وب متوقف شود . یعنی وقتی اخرین رویداد  Session_OnEnd  هم اتفاق افتاد حالا وقتش است که رویداد Application_OnEnd اتفاق بیافتند چرا که روی دادن اخرین  Session_OnEnd یعنی  دیگر هیچ کاربری سایت ما را در حال خواندن و باز شده ندارد .

مثال  :

notepad   را باز کنید انرا در مسیرصحیح ،  با پسوند asp ذخیره نمائید من اسم انرا

1.asp

می گذارم

دستورات زیر را بین تگ body باز و بسته که قبلا در فایل asp نوشته اید کپی کنید

<%

 

‘   ذخیره کردن اطلاعات در متغیر جلسه .

   Session("myInformation") = "somevalue"

 

%>

 


 

 دوباره  notepad را باز کنید انرا در مسیرصحیح ،  با پسوند asp ذخیره نمائید من اسم انرا

2.asp

می گذارم

دستورات زیر را بین تگ body باز و بسته که قبلا در فایل asp نوشته اید کپی کنید

 

<%

 

‘  نمایش دادن اطلاعات موجود در  متغیر جلسه 

 

   Response.Write Session(“myInformation”)

 

%>

 

 

حالا اول برنامه 1 را اجرا کنید و سپس برنامه 2 را اجرا نمائید . فعلا نیازی به سایت طراحی کردن نداریم

مثال :

 دستور زیر زمان  طول عمر جلسه را 5 دقیقه تنظیم می کند :

 

 

<%

Session.Timeout=5

%>

 
  •  از متد Abandonبرای خاتمه دادن به جلسه قبل از پایان زمان طول عمر ان جلسه ، استفاده می شود

 

Session.Abandon

 
ذخیره مقداردر متغیرهای جلسه و استفاده از انها

مثال :

 مثال زیر ، مقدار متغیر جلسه به نام usename را برابر jahan و مقدار متغیر جلسه به نام age را برابر 50  قرار می دهد

 

<%
Session("username")="Donald Duck"
Session("age")=50
%>

 
 زمانیکه مقداری در متغیرهای جلسه تعریف شده در یک صفحه application ،  ذخیره می شود ، در هر صفحه از ان application   هم می توان از ان متغیرها و مقدارشان استفاده کرد
 مثال :

 

Welcome <%Response.Write(Session("username"))%>

 

 خروجی دستور بالا برابر می شود :

welcome jahan

 

 همینطور می توانید وضعیت سیستم کاربر را هم در متغیرهای جلسه ذخیره کنید

و متناسب با وضعیت سیستم او ، صفحه خواسته شده اش را به او نمایش دهید

 مثال

در این دستورات ، اگر رزولوشن صفحه نمایش کاربر کم باشد نسخه فقط متنی صفحه application که  کاربر تقاضا کرده  است نمایش داده می شود

 

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

 
 البته در مثال بالا فقط پیام نشان داده می شود شما می توانید دستورات نمایش صفحه مورد نظر  را بنویسید
 
حذف متغیرهای جلسه
برای استفاده از مقداری که در متغیر جلسه قرار دارد ، از  contents استفاده می کنیم . درون پرانتز نام متغیر ی را می نویسیم که مقدار انرا لازم داریم
 با استفاده از متد Remove امکان حذف متغیر جلسه وجود دارد
 در مثال زیر اگر مقدار متغیر جلسه age کمتر از 18 باشد ، متغیر sale جلسه حذف خواهد شد

 

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

 
 برای حذف تمام متغیرهای جلسه از متد RemoveAll استفاده می کنیم

 

<%
Session.Contents.RemoveAll()
%>

 
حلقه

واقعا contents  چیست ؟

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

 برای اینکه مشاهده کنید چه چیزهایی درون Contents ذخیره شده است می توانید حلقه ای ایجاد  نمائید

 

مثال

 

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
Next
%>

 

هر i به هر اندیس در contents  اشاره دارد .

قبلا گفتم اندیس اسن ارایه همان اسم متغیرهای جلسه است

 

 نتیجه :

 

username
age

 
 اگر شما تعداد محتویات درون contents را می دانید ، می توانید از ویژگی Count  استفاده کنید

 

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

 
 نتیجه :

 

Session variables: 2
Donald Duck
50
 یعنی اگر اندیس ارایه contents  با عدد مشخص شود به مقدار درون هر متغیر جلسه اشاره دارد که به ترتیب ایجاد متغیرهای جلسه در این ارایه ذخیره شده اند
حلقه روی مجموعه StaticObjects

 شما می توانید روی مجموعه StaticObjects  حلقه ای ایجاد کنید

برای مشاهده مقدار تمام  اشیای ذخیره شده در شی Session  :

 

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
Next
%>

 
 مثال برای شی اپلیکیشن :
 در برنامه 3 با پسوند asp ، دستورات زیر را کپی کنید :

 

<%

 

‘   ذخیره کردن اطلاعات در متغیر اپلیکیشن .

  Application ("myInformation") = "somevalue"

 

%>

 

 

  در برنامه 4 با پسوند asp ، دستورات زیر را کپی کنید :

 

<%

 

‘  نمایش دادن اطلاعات موجود در  متغیر اپلیکیشن

 

   Response.Write Application (“myInformation”)

 

%>

 حالا اول برنامه 3 و سپس برنامه 4 را اجرا نمائید