• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

برنامه نويسي با Asp.net

p4ym4n

کاربر ويژه
مقدمه ای بر ASP

نقطه شروع کار با ASP شامل معرفی، کاربرد و مزايای ASP
Active Server Pages فناوری شرکت ميکروسافت جهت توليد سايتهای پويای وب می باشد. بعبارت ديگر ASP يک روش توليد صفحات وب است که طراحان وب را قادر می سازد تا صفحات HTML را بگونه ای طراحی نمايند که اين صفحات برحسب مورد و در زمان فراخوانی بصورت خودکار ايجاد شوند. بسياری از سايتهای وب بزرگ و معروف از اين فناوری استفاده نموده اند، مانند:
• - Microsoft
• - Dell online
• - Barnes & Noble
در ASP دستورالعمل ها (Script) بر روی سرور اجرا می شوند و سپس حاصل آن بصورت HTML به کامپيوتر کاربر ارسال می گردد. VBScript زبان پيش فرض دستورالعمل نويسی است، اما شما می توانيد از ديگر زبانهای دستورالعمل نويسی مانند JScript ، Perl استفاده کنيد.يک صفحه ASP مانند يک صفحه HTML است با اين تفاوت که پسوند نام فايل آن "asp." می باشد. همچنين يک صفحه ASP می تواند دستورالعملهای نزد سرور و نزد کاربر را همزمان درون خود داشته باشد. بعبارت ديگر در ASP معمولا از VBScript برای دستورالعملهای نزد سرور و از JavaScript برای دستورالعملهای نزد کاربر استفاده می گردد. دقت داشته باشيد که JScript و JavaScript دو زبان متفاوت هستند.
قابليت های ASP
• استقلال از مرورگر
ASP از مرورگر کاملا مستقل است زيرا تمامی دستورالعملها بر روی سرور اجرا می گردند و مرورگر تنها صفحات HTML معمولی را بعنوان حاصل اجرای دستورالعملها دريافت می کند.
• استفاده از زبان دستورالعمل نويسی
اين بدين معنی است که يک برنامه ASP براحتی قابل تغيير است چرا که زبانهای دستورالعمل نويسی نياز به کامپايل نداشته و براحتی می توان در يک ويرايشگر مانند Notepad برنامه نوشت و يا آن را تغيير داد.
• دسترسی آسان و سريع به انواع بانکهای اطلاعاتی
اعمال پيچيده مربوط به پردازش بانکهای اطلاعاتی در ASP بسيار ساده است به سرعت می توان برنامه دلخواه را نوشته يا تغيير داد. همان روش مورد استفاده در Visual Basic يا Visual C++ را می توانيد در ASP هم استفاده کنيد (ADO) و نياز به يادگيری مجدد روش خاصی نداريد.
بستر مورد نياز ASP (نزد سرور)
• Windows 2000: شامل ASP 3.0 و IIS 5.0
• Windows NT: شامل ASP 2.0 و IIS 4.0
• Windows 95/98: می توان با نصب Personal Web Server (PWS) از ASP 2.0 استفاده نمود.
• ساير سيستم عامل ها: می توان با استفاده از نرم افزار Chilisoft تقريبا در هر سيستم عاملی از ASP استفاده نمود.
 

p4ym4n

کاربر ويژه
ASP چگونه کار می کند؟

آشنائی با روش کار صفحات ASP و مقايسه آن با HTML به همراه مثال
بهترين راه درک روش کار ASP مقايسه آن با يک صفحه HTML است. تصور کنيد که شما می خواهيد يک صفحه HTML واقع در آدرس http://www.somewhere.com/page.html را ببينيد. مراحل زير را خواهيم داشت:
۱- ابتدا آدرس فوق را در محل آدرس مرورگرتان وارد می کنيد.
۲- مرورگرتان درخواست شما را به وب سرور مربوطه می فرستد.
۳- وب سرور صفحه مورد نظر را از ديسک سخت (يا حافظه) خود خوانده و آن را به مرورگر شما می فرستد.
۴- مرورگر صفحه دريافتی را نمايش می دهد.
همانگونه که مشاهده کرديد مراحل فوق اعمال ساده ای هستند و پردازش خاصی صورت نمی گيرد. حال فرض کنيد می خواهيد يک صفحه ASP به آدرس http://www.somewhere.com/page.asp را ببينيد:
۱- ابتدا آدرس فوق را در محل آدرس مرورگرتان وارد می کنيد.
۲- مرورگرتان درخواست شما را به وب سرور مربوطه می فرستد.
۳- وب سرور صفحه مورد نظر را از ديسک سخت (يا حافظه) خود می خواند.
۴- صفحه يافت شده توسط وب سرور از ابتدا تا انتها پردازش شده و هر دستورالعملی که در صفحه يافت شود اجرا می گردد و معادل آن کد HTML توليد شده و به سوی مرورگر شما ارسال می گردد.
۵- مرورگر صفحه دريافتی را نمايش می دهد.
مرحله اضافی در اينجا نسبت به حالت قبل مرحله شماره ۴ می باشد و تفاوت اساسی ميان صفحات ASP و HTML را بيان می کند. لازم به ذکر است که پردازشگر صفحات ASP در وب سرور فايل يا برنامه ASP.dll در می باشد و کليه دستورالعملهای ASP بين دو علامت <% و %> قرار می گيرند.
جهت درک بهتر مطالب فوق به مثال ساده زير توجه نمائيد:
<%For I = 1 To 5%>
<Font Size="<%=I>">Hello World </Font><br>
<%Next%>
 

p4ym4n

کاربر ويژه
ويژگی های تكنولوژی ASP



معرفی برخی ويژگی های تكنولوژی ASP
• ASP، يك محيط مناسب بر روی سرويس دهنده را بگونه أی فراهم می كند كه امكان ايجاد صفحات وب پويا و نرم افزارهای كاربردی تحت وب بسرعت و بسادگی فراهم ميگردد .
• صفحات ASP ، فايل هائی هستند كه شامل دستورات ( تگ ها ) HTML ، متن و دستورات اسكريپت می باشند.
• صفحات ASP می توانند اجزای ActiveX را جهت انجام عمليات خاصی نظير اتصال به يك بانك اطلاعاتی و يا محاسبات تجاری خاصی و انجام دهند.
• با استفاده از تكنولوژی ASP ، ميتوان اقدام به طراحی و پياده سازی صفحات وب پويا نمود.
• با استفاده از تكنولوژی ASP ، ميتوان اطلاعات متفاوتی را از طريق فرمهای موجود در صفحات وب جمع آوری و پردازش دلخواه را بر روی آنها انجام داد.
• جهت ايجاد صفحات ASP ، می توان از زبانهای اسكريپت متعددی نظير : Vbscript، Jscript، Perl، Rexx و استفاده نمود.
مدل عملياتی ASP
دستورات و اسكريپت های موجود در صفحات ASP ، زمانی اجراء ميگردنند كه مرورگر يك فايل با انشعاب .asp ، را از سرويس دهنده وب تقاضا نمايد. در ادامه سرويس دهنده وب ، ASP مربوطه را صدا زده و پس از اجرای دستورات و اسكريپت های موجود در آن ، ماحصل نتايج بصورت يك صفحه وب برای مرورگر ارسال ميگردد .
با توجه به اينكه صفحات ASP بر روی سرويس دهنده اجراء می گردنند، بنابراين تمامی عمليات مربوط به اجرای اسكريپت ها و دستورات بر روی سرويس دهنده انجام شده و وابسته به مرورگر نخواهد بود. در ضمن با توجه به اجرای صفحات ASP بر روی سرويس دهنده ، امكان مشاهده و تكثير اين نوع فايل ها وجود نداشته و صرفا" ماحصل ( نتايج ) اجرای ASP بصورت كدهای استاندارد HTML برای مرورگر ارسال ميگردد.
 

p4ym4n

کاربر ويژه
معرفی اوليه تكنولوژی ASP

معرفی فناوری ASP و تاريخچه آن بهمراه قابليت و لوازم شروع آن
شركت ماكروسافت در سال 1996 تكنولوژی ASP (Active Server Page) را معرفی نمود.تكنولوژی فوق اولين بار بهمراه سرويس دهنده اطلاعاتی اينترنت ( IIS :Internet Information Server ) نسخه 3.0 ارائه گرديد. با بكارگيری تكنولوژی فوق امكان طراحی و پياده سازی نرم افزارهای بزرگ و بانك های اطلاعاتی بهمراه صفحات وب فراهم می شود. هسته اوليه ASP , زبان Vbscript است . صفحات ASP بكمك كدهای نوشته شده توسط زبان فوق ايجاد می گردنند. Vbscript بعنوان زبان استاندارد برای پياده سازی صفحات ASP در نظر گرفته شده است ولی می توان از زبانهای Perl و Jscript در اين راستا نيز استفا ده نمود. ASP بر روی سرويس دهنده اجراء می گردنند. بديهی است در اين حالت عملكرد صفحات وب مستقل از توانائی های مرورگرها خواهد بود.
بنا به اظهارات شركت ماكروسافت در ماه مه سال 2000 , قريب به 800,000 هزار نفر در اين زمينه فعاليت داشته و به طراحی صفحات وب با بهره گيری از تكنولوژی فوق مشغول هستند. آمار فوق نشاندهنده رشد سريع و تصاعدی و استقبال عموم از تكنولوژی فوق در سطح جهان دارد. قريب به 500 شركت كامپيوتری در سطح جهان بصورت كاملا" تخصصی صرفا" به توليد قطعات و اجزای متفاوت بصورت كيت های آماده نرم افزاری بكمك ASP فعاليت داشته و محصولات ارائه شده توسط آنان بر روی استفاده در وب سايت های متعدد عرضه ميگردد.
ASP چه كارهائی را می تواند انجام دهد؟
تقريبا" همه چيز ! . توانائی های تكنولوژی فوق نامحدود است . مثلا" : دستيابی و جتسجو در بانك های اطلاعاتی متفاوت مستقل از بانك , شخصی نمودن صفحات وب , نمايش صفحات متفاوت برای مرورگرهای متفاوت , حفاظت رمز عبور , بازيهای كامپيوتری , پردازش فرم ها و نمونه هائی از توانائی های بيشمار تكنولوژی فوق می باشند.
برای شروع به چه چيزی نياز است ؟
جهت استفاده كامل از توانائی های ASP , می بايست سيستم عامل ويندوز NT 4.0 را بهمراه IIS 4.0 استفاده نمود( نسخه IIS 4.0 در زمان نصب ويندوز NT و پس از نصب NT 4.0 Option Pack ) بر روی سيستم نصب ميگردد. از ويندوز 2000 Server بهمراه IIS 5.0 نيز ميتوان در اين زمينه استفاده نمود.
جهت استفاده از ASP بر روی كامپيوترهائی كه بر روی آنها ويندوز 98 و يا 95 نصب گرديده است ميتوان سرويس دهنده شخصی وب ( PWS: Personal Web Server ) را بر روی كامپيوتر نصب نمود . جهت نصب PWS , كافيست از CD ويندوز 98 استفاده و در شاخه Add-ons\PWS برنامه Setup را اجراء نمود.
 

p4ym4n

کاربر ويژه
درس اول: آشنائی اوليه با تكنولوژی ASP

معرفی فناوری ASP و بستر مورد نياز آن

ASP چيست ؟
- asp مخفف كلمات Active Server Page است .
- asp برنامه ای است كه بكمك IIS اجراء می گردد.
- IIS مخفف كلمات Internet Information Server است .
- IIS يكی از عناصری است كه بهمراه ويندوز 2000 آورده شده است .
- IIS يكی از اجزای Windows NT 4.0 Option Pack نيز می باشد.
- PWS ( Personal Web Server ) يك نسخه خاص و كوچكتر از برنامه IIS است .
- PWS را می توان از روی CD حاوی ويندوز 98 نصب نمود.
يك فايل ASP شامل چه چيزهائی است ؟
- يك فايل asp در اغلب موارد مشابه يك فايل HTML است .
- يك فايل asp می تواند شامل متن ، كدهای HTML ، كدهای XML و اسكريپت ها باشد.
- اسكريپت ها ی موجود در يك فايل asp بر روی سرويس دهنده ( Server ) اجراء می گردنند.
- يك فايل asp دارای انشعاب .asp است .
يك فايل asp چگونه كار می كند؟
- زمانيكه يك مرورگر ( نظير IE ) درخواست يك فايل HTML را داشنه باشد ، سرويس دهنده آن را ارسال ميدارد.
- زمانيكه يك مرورگر درخواست يك فايل asp را داشته باشد،IIS درخواست واصله را به هسته ASP ارسال ميدارد.
- هسته asp ، فايل asp را خط به خط خوانده و اسكريپت های موجود در آن را اجراء خواهد كرد.
- در نهايت ، ماحصل اجرای يك فايل asp بصورت كدهای HTML برای مرورگر ارسال خواهد شد.
با استفاده از asp چه كار می توان كرد؟
- امكان ويرايش ،تغيير و يا اضافه كردن موارد دلخواه بصورت پويا برای يك صفحه وب فراهم می گردد.
- پاسخ به درخواست های واصله از كاربران و يا داده های ارسال شده توسط فرم های HTML
- دستيابی به هر نوع داده و يا بانك اطلاعاتی و برگرداندن نتايج به مرورگر
- سفارشی نمودن يك صفحه وب بمنظور استفاده بهتر برای كاربران خاص
- در مقايسه با تكنولوژی CGI بمراتب ساده تر و سريعتر می باشند.
- تامين امنيت لازم در خصوص عدم نمايش كدهای مربوطه توسط مرورگرها
- با توجه به برگرداندن نتيجه اجرای يك asp بصورت HTML امكان مشاهده آنان توسط هر مرورگربراحتی فراهم ميگردد.
- با استفاده از تكنيك های برنامه نويسی بهمراه asp می توان حجم ترافيك شبكه را كاهش داد.
چگونه می توان يك فايل asp را برروی كامپيوتر شخصی خود اجراء نمود؟
با نصب يكی از نرم افزارهای PWS و يا IIS بر روی كامپيوتر خود (با توجه به سيستم عامل نصب شده ) می توان بدون نياز به يك سرويس دهندهكمكی ديگر، اقدام به اجرای فايل های asp نمود.

• نحوه نصب PWS و اجرای فايل های asp بر روی ويندوز 98
مرحله اول : برنامه setup.exe را از مسير \Add-ons\PWS موجود در CD حاوی ويندوز 98 اجراء نمائيد.
مرحله دوم : يك فولدر با نام Inetpub بر روی هارد ديسك ( مسير مشخص شده در زمان نصب ) ايجاد و در آن يك فولدر با نام wwwroot ساخته می گردد.فولدر فوق را باز نمائيد.
مرحله سوم : يك فولدر جديد با نام دلخواه ( نظير : MyfirstWeb ) در فولدر wwwroot ايجاد نمائيد.
مرحله چهارم : با استفاده از يك اديتور متنی ( نظير Notepad ) كدهای دلخواه asp خود را تايپ كرده و فايل فوق را بام دلخواه ( Test.asp) ولی با انشعاب asp در فولدر MyfirstWeb ذخيره نمائيد.
مرحله پنجم : اطمينان حاصل نمائيد كه سرويس دهنده وب ( PWS ) در حالت اجراء است .
مرحله ششم : مرورگر خود را فعال نموده و در محل مربوطه ، آدرس زير را بمنظور مشاهده فايل asp تايپ نمائيد. http://localhost/MyfirstWeb/Test.asp

• نحوه نصب و اجرای PWS و اجرای فايل های asp بر روی ويندوز NT
PWS بمنظور نصب بر روی ويندوز NT طراحی نشده است !. برای اجرای فايل های asp بر روی ويندوز NT ، ميبايست "Windows NT 4.0 Option Pack" را تهيه و آن را نصب نمود. پس از نصب pack فوق و نصب IIS زمينه اجرای فايل های asp بر روی ويندوز NT فراهم می گردد.
• نحوه نصب PWS و اجرای فايل های asp بر روی ويندوز ME
PWS بهمراه ويندوز ME آورده نشده است!
• نحوه نصب IIS و اجرای فايل های asp در ويندوز 2000
مرحله اول : فعال كردن Control panel .
مرحله دوم : انتخاب Add/Remove Programs
مرحله سوم : در پنجره مربوطه ، Add/Remove Windows Components را انتخاب نمائيد.
مرحله چهارم : در پنجره ويزارد مربوطه Internet Information Services را فعال نمائيد.
مرحله پنجم : يك فولدر با نام Inetpub بر روی هارد ديسك ( با توجه به مسير داده شده ) ايجاد می گردد.
مرحله ششم : در فولدر فوق يك فولدر ديگر و با نام wwwroot ايجاد می گردد.
مرحله هفتم : در فولدر wwwroot يك فولدر ديگر و با نام دلخواه خود ( MyFirstWeb ) ايجاد نمائيد.
مرحله هشتم : با استفاده از يك اديتور متنی ( نظير Notepad ) كدهای دلخواه asp خود را تايپ كرده و فايل فوق را بنام دلخواه ( Test.asp) ولی با انشعاب asp در فولدر MyfirstWeb ذخيره نمائيد.
مرحله نهم : اطمينان حاصل نمائيد كه سرويس دهنده وب ( IIS ) در حالت اجراء است .
مرحله دهم : مرورگر خود را فعال نموده و در محل مربوطه ، آدرس زير را بمنظور مشاهده فايل asp تايپ نمائيد. http://localhost/MyfirstWeb/Test.asp
 

p4ym4n

کاربر ويژه
درس دوم: بررسی ساختار و دستور زبان ASP


كدهای نوشته شده در يك ASP را نمی توان در يك مرورگر مشاهده نمود. در چنين حالتی صرفا ماحصل اجرای كدهای ASP بصورت كدهای HTML توسط مرورگرها قابل نمايش خواهد بود.
قانون اوليه در رابطه با گرامر ASP
يك فايل ASP اغلب شامل كدهای HTML نظير آنچه كه در يك فايل HTML استاندارد قرار می گيرد، است. علاوه بر كدهای HTML كه در يك فايل ASP قرار می گيرد، می توان از مجموعه ای اسكريپت مخصوص سرويس دهنده نيز استفاده كرد . اين اسكريپت ها بين <% و %> قرار می گيرند. اسكريپت های استفاده شده بر روی سرويس دهنده اجراء شده و می تواند شامل عبارات، عملگرها، جملات، برنامه های فرعی و ساير امكانات مجاز مربوط به زبانهای اسكريپت باشد.
تمامی علاقه مندان به دنيای نرم افزار بخصوص برنامه نويسی بخوبی آگاه هستند كه در زمان آشنائی با يك زبان برنامه نويسی ، اولين برنامه ا ی كه نوشته می شود و يا روی آن بحث می گردد، برنامه Hello World معروف است . مهمترين ويژگی اين نوع از برنامه ها آشنائی سريع و اوليه علاقه مندان با ساختار يك زبان برنامه نويسی و شناخت امكانات خروجی زبان مورد مطالعه است . ما هم در اين زمينه برای معرفی ساختار يك برنامه ASP از چنين نقطه ای آغاز می كنيم . اما قبل از آن با ابزار اوليه در اين راستا می بايست بهتر آشنا شويم.
معرفی شئ Response
متد Write مربوط به شئ Response ، مسئول ارسال اطلاعات ( محتويات ) به مرورگر است. مثلا در صورتيكه بخواهيم عبارت معروف فوق، توسط مرورگر نمايش داده شود، كافی است از دستور Response.Write("Hello World") استفاده گردد.
در ASP از زبانهای اسكريپت متفاوتی استفاده می شود. زبان پيش فرض در اين زمينه VBScript است.
<%
Response.write("Hello World!")
%>
در صورتيكه بخواهيم از زبان جاو اسكريپت بعنوان زيان پيش فرض استفاده كنيم ،كافی است در ابتدای صفحه زبان فوق را معرفی نمائيم.
<%
Response.write('Hello World!');
%>
جاوا اسكريپت بر خلاف VBScript به حروف بزرگ و كوچك حساسيت داشته و می بايست اين امر مورد توجه قرار گيرد.
ASP امكان نوشتن كدهای مورد نظر را بكمك زبانهای اسكريپت جاوا اسكريپت و VBScript فراهم می كند. در صورتيكه قصد استفاده از ساير زبانهای اسكريپت نظير Perl , Python , را داشته باشيم، می بايست هسته ( engines ) مربوط به آن زبان بطور جداگانه نصب گردد. در پايان اين بخش به بررسی دو مثال ساده خواهيم پرداخت.
مثال در اين مثال با نحوه شکل دهی در يك ASP و بكمك امكانات موجود درHTML آشنا می شويم.
<%
Response.Write("<h2>Hello World!<br>This sentence uses HTML<br> tags to format the text!</h2>")
%>
 

p4ym4n

کاربر ويژه
درس سوم: بررسی متغيرها در ASP

نحوه تعريف متغير و بکارگيری آن در ASP
استفاده از متغير در يك برنامه بسيار حائز اهميت است. برنامه نويسان از متغيرها برای ذخيره سازی داده های مربوطه استفاده و زمينه پردازش داده های ذخيره شده با امكان دستيابی به متغيرها در طول يك برنامه فراهم می گردد. يك برنامه كامپيوتری خود می تواند شامل چندين برنامه جانبی بوده كه هر كدام مسئول انجام بخشی از عمليات در كل برنامه می باشند. متغيرها را می توان در درون يك تابع ( برنامه جانبی ) و هم بيرون از يك تابع تعريف نمود. نوع تعريف يك متغير ( محلی و يا سراسری ) محدوده مجاز دستيابی به متغير را تبين خواهد ساخت.
در برنامه های ASP، زمانيكه يك متغير در خارج از يك تابع تعريف می گردد، امكان دستيابی به آن در طول برنامه فراهم شده و از اين بابت محدوديت در دسترسی را نخواهد داشت. در صورتيكه يك متغير در يك تابع تعريف گردد، در زمان صدا زدن تابع متغير ايجاد و پس از خروج از تابع متغير از بين خواهد رفت. بديهی است در چنين حالتی اسكريپت های موجود در ساير بخش های يك برنامه ASP، قادر به دستيابی و تغيير محتويات اينچنين متغيرهائی نخواهند بود. تا كنون بحث ما مربوط به محدوده مجاز يك متغير در يك فايل ( برنامه ) ASP بود، در صورتيكه بخواهيم امكان دستيابی به يك متغير را در طول چندين فايل ASP فراهم كنيم، می بايست آن را بصورت يك متغير Session و يا يك متغير Application تعريف نمائيم.
متغيرهای Session
اين نوع متغيرها اطلاعاتی را در رابطه با يك كاربر ذخيره كرده و امكان دستيابی به آن برای تمامی صفحات موجود در يك برنامه فراهم می گردد. اغلب اطلاعات عمومی نظير نام كاربر و مشخصه آن در چنين متغيرهائی ذخيره می گردد. پس از ايجاد يك متغير Session، از شی Session برای ذخيره سازی آن استفاده می گردد.
متغيرهای Application
اين نوع متغيرها نيز قابل دستيابی در تمامی صفحات مربوط به يك برنامه ASP می باشند. از اين متغيرها اغلب جهت ذخيره سازی اطلاعات در رابطه با تمامی كاربران يك برنامه خاص، استفاده می گردد. پس از ايجاد متغيری از اين نوع، از شی Application برای ذخيره سازی آن استفاده می گردد.
در ادامه به بررسی چندين مثال كاربردی از نحوه تعريف و بكارگيری متغيرها در برنامه های ASP خواهيم پرداخت.
مثال ۱ - ايجاد يك متغير . در اين مثال با نحوه تعريف، مقداردهی و استفاده از يك متغير، آشنا خواهيم شد.
<%
Dim name
name="IranASP.NET"
Response.write("My favorite site is:"& name)
%>
مثال ۲ - ايجاد يك آرايه ( بردار ) . از ساختمان داده بردار برای ذخيره سازی مجموعه ای محدود و يكسان داده استفاده ميگردد. در اين مثال با نحوه تعريف و استفاده از يك بردار آشنا خواهيم شد.
<%
Dim myaim(4)
myaim(0) = "I"
myaim(1) = "Like"
myaim(2) = "To"
myaim(3) = "Learn"
myaim(4) = "ASP"
For i = 0 to 4
response.write(myaim(i) & "<br>")
Next
%>
مثال ۳ - حلقه تكرار . در اين مثال با نحوه بكارگيری متغيرها و استفاده از آنان در حلقه های تكرار آشنا خواهيم شد
<%
Dim i
for i = 1 to 6

response.write("<h" & i & ">This is header " & i & "
Next
%>
مثال ۴ - در اين مثال با توجه به زمان مربوط به سرويس دهنده، پيامهای متفاوتی به كاربر داده خواهد شد.
<%
Dim h
h = hour(now)
response.write("<p>" & now)
response.write(" (Local Time) </p>")
If h < 12 then
response.write("Good Morning!")
else
response.write("Good Night!")
end if
%>
 

p4ym4n

کاربر ويژه
درس چهارم: روال ها و توابع در ASP

بررسی روال ها و زيربرنامه ها در ASP کلاسيک
يک روال يا تابع مجموعه ای از يک يا چند دستور است که بصورت گروهی اجرا می شوند. يک تابع مانند يک روال است با اين تفاوت که مقداری را برمی گرداند.
در VBScript برای تعريف يک روال از عبارت Sub و برای تعريف يک تابع از Function استفاده می کنيم. در VBScript جهت برگرداندن يک مقدار از تابع، بايد مقدار مورد نظر را مانند زير به نام تابع نسبت دهيم.
myFunction = myValue

در جاواسکريپت برای نوشتن يک روال يا تابع تنها از عبارت function استفاده می کنيم. بعبارت ديگر يک روال تابعی است که مقداری را برنمی گرداند. جهت برگرداندن يک مقدار در توابع جاوااسکريپت از دستور return استفاده می کنيم.
return myValue;

در برنامه های ASP ، می توان يك روال را از طريق VBScript و يا بالعكس صدا زد . برای صدا زدن يك روال از طريق يك برنامه ASP كه با زبان VBScript نوشته شده است ، از دستور Call كه بدنبال آن نام روال می آيد، استفاده می گردد. در صورتيكه يك روال نيازمند پارامتر باشد ، می بايست پارامترهای مربوطه را بين پرانتز قرار داده و آنها را در اختيار روال قرار داد . در صورتيكه از فرمان call برای صدا زدن يك روال استفاده نگردد ، پارامترهای مربوطه را نبايد بين پرانتز قرار داد. قرار دادن پرانتز در صورتيكه يك روال دارای پارامتر نباشد ، اختياری است.
در زمانيكه اسكريپت های موجود در يك برنامه ASP به زبان جاوااسكريپت نوشته شده باشند و قصد صدا زدن يك روال را داشته باشيم كه با زبان VBScript و يا جاوااسكريپت نوشته شده باشد ، قرار دادن پرانتز بعد از نام روال ضروری است.
در مثال زير با نحوه صدا زدن يك روال (تابع Zarb نوشته شده با VBScript ) توسط يك برنامه ASP آشنا خواهيم شد.
<html>
<head>
<%
Sub Zarb(num1,num2)
response.write(num1*num2)
End Sub
%>
</head>
<body>
<p>Calling a Subroutine with Call statement: <%call Zarb(7,6)%>
<p>Calling a Subroutine without Call statement: <%Zarb 6,7%>
</body>
</html>
در مثال زير با نحوه صدازدن دو روال ( يكی با جاوااسكريپت و ديگری با VBScript نوشته شده است) در يك برنامه ASP آشنا می شويم.
<html>
<head>
<%
Sub ZarbVBScript(num1,num2)
Response.Write(num1*num2)
End Sub
%>

<script language="javascript" runat="server">
function ZarbJavascript(num1,num2)
{
Response.Write(num1*num2)
}
</script>
</head>
<body>
<p>The Result of the VBScript Subroutine: <%call ZarbVBScript(6,7)%>
<p>The Result of the JavaScript Subroutine: <%call ZarbJavascript(6,7)%>
</body>
</html>
 

p4ym4n

کاربر ويژه
درس پنجم: فرم ها در ASP - قسمت اول

دريافت اطلاعات از ورودی بوسيله فرم ها
يكی از مزايای برنامه های ASP قابليت ايجاد ارتباط متقابل با كاربران است. همانطور كه می دانيد يكی از بخش های مهم هر نرم افزار بخش رابط كاربر است كه كاربران را قادر می سازد بسرعت و بسادگی با نرم افزار مربوطه ارتباط برقرار كرده و از پتانسيل های موجود در يك نرم افزار استفاده نمايند.
بخش رابط كاربر در اغلب نرم افزارهای وب به عهده مرورگرها گذاشته شده است. اين نرم افزارها دارای امكانات لازم جهت ايجاد يك محيط رابط كاربر مناسب می باشند. يكی از مسائل مهم در هر نرم افزار نحوه اخذ اطلاعات از كاربران و در نهايت پردازش و ارائه خروجی های لازم است. بدون شك پتانسيل اخذ اطلاعات از استفاده كننده يك نرم افزار را می توان نقطه آغازين هر نوع برنامه كامپيوتری دانست.
در برنامه های ASP ، با استفاده از فرم ها می توان اقدام به اخذ اطلاعات از كاربران نمود. پس از ارسال اطلاعات در قالب فرم ها زمينه پردازش آنها بر روی سرويس دهنده فراهم می گردد. نكته مهم در اين زمينه اين است كه محل اخذ اطلاعات و محل پردازش اطلاعات دو محل كاملا متمايز از هم بوده و ايده پردازش سيستمهای سرويس گيرنده / سرويس دهنده در اين مدل معنای خاص خود را پيدا می كند.
در برنامه های ASP با استفاده از دستورات Request.QueryString و Request.Form امكان اخذ اطلاعات فراهم می گردد.
Request.QueryString
با استفاده از دستور فوق می توان اقدام به جمع آوری اطلاعات يك فرم بصورت متن نمود. اطلاعات جمع آوری شده توسط متد GET ارسال خواهند شد. استفاده از متد فوق جهت ارسال اطلاعات يك فرم دارای محدوديت حجم اطلاعات ارسالی است.
مثال زير يك فرم ساده را كه دارای دوفيلد متن معمولی با نام FirstName و LastName است ، ايجاد و پس از تكميل فرم توسط كاربر و همزمان با فشردن دكمه Send آنها را برای برنامه GetName.asp بر روی سرويس دهنده ارسال ميدارد.
<form method="GET" action="../GetName.asp">
First Name: <input type="text" name="FirstName"><br>
Last Name : <input type="text" name="LastName"><br>
<input type="submit" value="Send">
</form>

در صورتيكه فرم فوق پس از تكميل توسط متد GET ( همانطور كه در تعريف فرم نيز آورده شده است ) ارسال گردد و كاربر در قسمت نام کلمه Javad ودر قسمت نام خانوادگی کلمه Sakhaee را تايپ كرده باشد ، آدرس زير پس از فشردن دكمه Send برای سرويس دهنده ارسال می گردد.
http://www.Mycompany.com/GetName.asp...stName=Sakhaee

آدرس فوق در بردارنده چندين نكته مهم است : اولا نام فايل (برنامه ای) كه می بايست بر روی سرويس دهنده فعال گردد را مشخص ميسازد ( GetName.asp ) و ثانيا داده های اخذ شده و ذخيره شده در دو متغير با نام FirstName و LastName را در اختيار برنامه فوق قرار خواهد داد. هر يك از پارامترهای تايپ شده توسط علامت & از ديگری جدا شده است. تا اينجای قضيه، فرم توسط كاربر تكميل و ارسال شده است در ادامه می بايست با ماهيت برنامه GetName.asp كه بر روی سرويس دهنده قرار دارد و می بايست بر روی داده های ارسالی عمليات مورد نظر را انجام دهد ، آشنا شويم. اين برنامه می تواند دارای اسكريپت هائی مطابق زير باشد :
Welcome to IranASP.NET site
<%
response.write(request.querystring("FirstName"))
response.write(" ")
response.write(request.querystring("LastName"))
%>

برنامه فوق پس از اجرا ، خروجی زير را بر روی مرورگر كاربر به نمايش در می آورد.
Welcome to IranASP.NET site Javad Sakhaee

Request.Form
در صورتيكه اطلاعات موجود در يك فرم را از طريق متد POST اخذ كرده باشيم ، از دستور فوق استفاده می شود. برخلاف متد GET اين متد ( POST ) دارای محدوديت از بعد حجم اطلاعات ارسالی نبوده و امنيت ارسال اطلاعات نيز دارای مقبوليت بيشتری است.
در صورتيكه فرم فوق پس از تكميل توسط متد POST ( در تعريف فرم می بايست مشخص گردد ) ارسال گردد و كاربر در بخش نام Javad ودر بخش نام خانوادگی Sakhaee را تايپ كرده باشد ، آدرس زير پس از فشردن دكمه Send برای سرويس دهنده ارسال می گردد.
http://www.mycompany.com/GetName.asp

برنامه GetName.asp كه بر روی سرويس دهنده قرار دارد و می بايست بر روی داده های ارسالی عمليات مورد نظر را انجام دهد ، دارای اسكريپت هائی مطابق زير است:
Welcome to IranASP.NET site
<%
response.write(request.form("FirstName"))
response.write(" ")
response.write(request.form("LastName"))
%>
 

p4ym4n

کاربر ويژه
درس پنجم: فرم ها در ASP - قسمت دوم

استفاده از متد GET جهت اخذ و ارسال اطلاعات
در اين مثال با نحوه ايجاد يك ارتباط متقابل با كاربر از طريق تكميل يك فرم توسط كاربر، ارسال آن توسط متد GET ، پردازش فرم و ارائه پاسخ های لازم از طرف سرويس دهنده با استفاده از دستور Request.QueryString آشنا خواهيم شد.
<form action="Les5p2sam1.asp" method="GET">
Please type your first name:<input type="text" name="FirstName"><br>
<input type="submit" value="Submit">
</form>
<%
If Request.QueryString("FirstName") <> "" Then
Response.Write ("Hello " & Request.QueryString("FirstName") & "!<br>")
Response.Write ("Did you visit <a href=""http:/www.iranasp.net"">IranASP.NET</a> yet?")
End If
%>
استفاده از متد POST جهت اخذ و ارسال اطلاعات
در اين مثال نحوه ايجاد يك ارتباط متقابل با كاربر را از طريق تكميل يك فرم توسط كاربر، ارسال آن توسط متد POST ، پردازش فرم و ارائه پاسخ های لازم از طرف سرويس دهنده با استفاده از دستور Request.Form را آشنا خواهيم شد.
<form action="Les5p2sam2.asp" method="POST">
Please type your first name:<input type="text" name="FirstName"><br>
<input type="submit" value="Submit">
</form>
<%
If Request.Form("FirstName")<>"" Then
Response.Write ("Hello " & Request.Form("FirstName") & "!")
Response.Write ("Did you visit <a href=""http:/www.iranasp.net"">IranASP.NET</a> yet?")
End If
%>
در اين مثال با نحوه ايجاد ارتباط متقابل با كاربر از طريق استفاده از دكمه های راديوئی ( Radio Buttom ) و بكمك دستور Request.Form آشنا خواهيم شد.
<%
Dim site
site=Request.Form("site")
%>
<form action="Les5p2sam3.asp" method="POST">
<p>Please select your favorite Site:</p>
<input type="radio" name="site"
<%
if site = "IranASP.NET" then
Response.Write(" checked")
end if
%>
value="IranASP.NET">IranASP.NET<br>
<input type="radio" name="site"
<%
if site = "Other websites!!" then
Response.Write(" checked")
end if
%>
value="Other websites!!">Other websites!!<br>
<input type="submit" value="Submit">
</form>
<%
if site<>"" then
Response.Write("<p>Your favorite site is: " & site & "</p>")
end if
%>
 

p4ym4n

کاربر ويژه
درس ششم: کوکی ها در ASP

آشنايی با کوکی ها و نحوه بکارگيری آنها
Cookie يا کوکی همانند برچسبی است كه در زمان مسافرت با هواپيما بر روی بار مسافر قرار می گيرد. اين برچسب يك شماره سريال بوده كه يك نسخه از آن نيز در اختيار مسافر قرار گرفته تا پس از رسيدن به مقصد با اتكاء به آن امكان برداشتن بار خود را داشته باشد. در حقيقت برچسب فوق مولفه ای است كه بصورت منحصر بفرد بار يك مسافر را مشخص می كند.
هنگاميكه به يك وب سايت مراجعه می کنيم، ممکن است که يك برچسب خاص در يك آدرس معين و مشخص بر روی هارد ديسک كامپيوتر كاربر قرار گيرد. در مراحل و زمانهای بعدی كه مجددا به سايت مورد نظر مراجعه می کنيم، سرويس دهنده وب سايت مزبور از اطلاعات ذخيره شده با اين برچسب استفاده و متناسب با مقادير ذخيره شده در آن از خود واكنش نشان می دهد. هر وب سايت دارای يك برچسب اختصاصی مربوط به خود بوده كه امكان استفاده از مقادير مندرج در آن و حتی بهنگام سازی توسط سرويس دهنده وب را ميسر خواهد کرد. مثلا می توان بر روی برچسب فوق رنگ مورد علاقه كاربر اينترنت در رابطه با يك سايت را ثبت نمود. بدين ترتيب در صورتيكه كاربر فوق مجددا به سايت مورد نظر مراجعه کند، ( برچسب مربوط به آن در مراحل قبل ايجاد و بر روی كامپيوتر سرويس گيرنده قرار گرفته است ) تمامی صفحاتی كه برای وی به نمايش درخواهد آمد با استناد به رنگ مورد نظر كاربر می باشد.
اطلاعات ذخيره شده در کوکی می تواند شامل مجموعه ای از اطلاعات خاص در رابطه با پارامترهای مربوط به نحوه نمايش صفحه وب نظير رنگ، رويه زمينه و فونت های استفاده شده و يا اطلاعاتی در رابطه با تشريح عملياتی باشد كه ملاقات كننده سايت در جلسه قبل انجام داده است. يكی از كاربردهای مهم کوکی امكان تبادل اطلاعات بين صفحات وب است. در چنين حالتی می توان آنها را بعنوان مجموعه ای از متغيرهای سراسری فرض كرد كه دامنه اعتبار آنها در تمام وب سايت است.
از يك کوکی برای مشخص نمودن يك كاربر نيز استفاده می شود. يك کوکی در اصل يك فايل كوچك بوده كه سرويس دهنده آن را با مرورگر يك كاربر تلفيق می نمايد. هر زمان كه مرورگر درخواست يك صفحه را داشته باشد کوکی مربوطه نيز ارسال خواهد شد. با استفاده از اسكريپت های ASP می توان هم به مقادير ذخيره شده در يك کوکی دستيابی داشت و هم مقادير آن را تغيير داد.
تنظيم کوکی
برای مقدار دهی مورد نظر يك کوکی می توان از دستور Response.Cookies استفاده كرد. در صورتيكه کوکی وجود نداشته باشد، آن را ايجاد و مقدار مورد نظر را به آن نسبت خواهد داد. در مثال زير يك کوکی بنام userid و مقدار 100618 برای مرورگر ارسال می گردد. اين کوکی تا زمانيكه كاربر به سايت مورد نظر وصل است وجود خواهد داشت. اين دستور می بايست قبل از تگ <html> قرار گيرد.
<%Response.Cookies("userid")=100618%>

در صورتيكه بخواهيم كاربری را كه مرورگر خود را متوقف كرده و مجددا آن را اجرا نموده باز هم شناسائی نمائيم، می بايست از صفت Expires بهمراه دستور Response.Cookies استفاده نموده و تاريخ اعتبار آن را مشخص سازيم.
<%
Response.Cookies("userid")=100618
Response.Cookies("userid").Expires="May 15, 2005"
%>

دستيابی به مقادير کوکی
برای دستيابی به مقدار يك کوکی می بايست از دستور Request.Cookies استفاده نمائيم. در مثال زير می خواهيم مقدار ذخيره شده در userid را بخوانيم ( بازيابی 100618 )
<%Response.Write(Request.Cookies("userid"))%>

تنظيم مسيرهای کوکی
هر کوکی كه در مرورگر ذخيره می گردد دارای اطلاعاتی در رابطه با مسير است. زمانيكه مرورگر درخواست فايلی را داشته باشد كه مسير آن دقيقا در کوکی مشخص شده باشد مرورگر کوکی را برای سرويس دهنده ارسال خواهد كرد.
برای مشخص نمودن يك مسير برای يك کوکی می توان با استفاده از صفت Path در كنار دستور Response.Cookies به اين هدف نائل شد. در مثال زير مسير Sales\Customer\Profiles به يك کوکی با نام Zip نسبت داده می شود.
<%
Response.Cookies("Zip")="12"
Response.Cookies("Zip").Expires="January 21, 2004"
Response.Cookies("Zip").Path="/Sales/Customer/Profiles/"
%>

تمامی مرورگرها امكان استفاده از کوکی را ندارند. در چنين حالتی و در صورتيكه يك برنامه نيازمند ارتباط با مرورگر باشد می توان اژ روش های ديگری جهت ارسال اطلاعات از يك صفحه به صفحه ديگر در يك برنامه استفاده نمود.
در اين مثال با نحوه ايجاد يك کوکی welcome آشنا می شويد.
<%
response.cookies("NumVisits").Expires = date + 365
num=request.cookies("NumVisits")
If num = "" Then
response.cookies("NumVisits") = 1
Else
response.cookies("NumVisits") = num + 1
End If
%>
<html>
<body>
<%if num="" then%>
Welcome! This is the first time you are visiting this Web page.
<%else%>
You have visited this Web page <%response.write(num)%> times before
<%end if%>
</body>
</html>
 

p4ym4n

کاربر ويژه
درس هفتم: آشنائی با شئ Session


کاربرد شئ Session و نحوه تعريف و بکارگيری متغير در آن
از شئ Session برای ذخيره و تغيير تنظيمات مربوط به يك جلسه كاری كاربر استفاده می شود. متغيرهای ذخيره شده در شئ فوق صرفا اطلاعات مربوط به يك كاربر را ذخيره كرده و در تمامی صفحات مربوطه به يك برنامه قابل دستيابی هستند.
زمانيكه با يك برنامه كار می كنيد، آن را فعال كرده ( Open ) و پس از بهره برداری از پتانسيل های آن در صورت لزوم تغييرات لازم را انجام و در نهايت برنامه را غيرفعال ( Close ) می كنيد. فرآيند فوق يك جلسه كاری با نرم افزار مورد نظر را نشان می دهد. در چنين حالتی كامپيوتر، شما را كاملا می شناسد، او می داند كه شما چه زمانی برنامه را شروع و در چه زمانی به اجرای آن خاتمه داده ايد.
در رابطه با برنامه هائی كه بر روی اينترنت اجراء می شوند، به يك مشكل خاص برخورد خواهيم كرد: سرويس دهنده وب نه شما را می شناسد و نه می داند كه چه كارهائی كرده ايد، علت اين امر در نحوه رفتار پروتكلی است كه بعنوان استاندارد دريافت و ارسال بين سرويس گيرنده وب ( مرورگرها ) و سرويس دهنده وب ايفای وظيفه می كند ( پروتكل HTTP ). پروتكل فوق Stateless است يعنی وضعيت قبلی را نگهداری نمی كند (دارای بيماری فراموشی است!).
ASP، با امكان ايجاد يك کوکی (Cookie) منحصربفرد برای هر كاربر توانسته است راهكاری شايسته برای اين مشكل ارائه نمايد. کوکی فوق برای هر سرويس گيرنده ارسال می گردد و شامل اطلاعاتی است كه هويت اينترنتی كاربر را شناسائی و معرفی می نمايد. واسط فوق شئ Session ناميده می شود.
در شئ فوق اطلاعات رايجی نظير name، id، و ذخيره می گردد. سرويس دهنده برای هر كاربر جديد يك شئ Session ايجاد کرده و پس از اتمام تاريخ مصرف تعيين شده برای آن، از بين خواهد رفت . قطعا در ذهن خواننده اين سوال پيش آمده كه اين شئ چه زمانی آغاز و تحت چه شرايطی ايجاد ميگردد؟
شئ فوق تحت شرايط زير آغاز می گردد:
• كاربر جديدی درخواست يك فايل ASP را داشته باشد و فايل Global.asa شامل يك روتين Session_OnStart باشد.
• كاربری مقداری را در متغير Session ذخيره كرده باشد.
• كاربری درخواست يك فايل ASP را داشته باشد و فايل Global.asa از تگ <object> استفاده كرده باشد.
Session.Timeout = 5

بمنظور خاتمه دادن به يك Session می توان از متد Abandon بصورت زير استفاده كرد.
Session.Abandon

مهمترين مسئله در رابطه با Session ، زمانی مطرح می گردد كه آنها می بايست متوقف گردند. ما هيچگونه اطلاعی از اين موضوع نداريم كه آيا آخرين درخواست كاربر بصورت نهائی قطعی شده است يا خير؟ ما بر روی سرويس دهنده نمی دانيم كه تا چه زمانی می بايست Session را بصورت فعال نگهداری نمائيم. در صورتيكه اين زمان به درازا بكشد، منابع موجود بر روی سرويس دهنده معطل شده و استفاده بهينه از آنان جای ترديد خواهد داشت و در صورتيكه بسرعت Session را از روی سرويس دهنده حذف نمائيم، اين نگرانی وجود خواهد داشت كه كاربر پس از مدت زمان كوتاهی مجددا به سرويس دهنده متصل و عملا ما بر روی سرويس دهنده اطلاعات وی را نخواهيم داشت. در چنين حالتی كاربر مجبور خواهد بود كه همه چيز را از نو آغاز نمائد. بهرحال پيداكردن و تنظيم مقدار مناسب برای Timeout يك مسئله مهم و در عين حال مشكل است .
ذخيره و بازيابی مقادير متغير در شئ Session
يكی از موارد مهم و حياتی در رابطه با شئ Session، توانائی ذخيره سازی متغيرهائی در آن است. در مثال زير با استفاده از دو متغير مربوط به شئ Session، يعنی username وage دو مقدار در شئ Session ذخيره شده است
<%
Session("username") = "Sakha"
Session("age") = 8
%>

پس از ذخيره نمودن مقادير فوق، امكان دستيابی به اين مقادير برای تمامی صفحات در يك برنامه ASP فراهم می گردد. جهت انجام اين كار از امكان Session(username) استفاده می گردد. در مثال زير عبارت Welcome Sakha در اختيار ملاقات كننده صفحه جديد قرار خواهد گرفت.
Welcome <%Response.Write(Session("username"))%>

حذف مقادير ذخيره شده
مجموعه contents شامل تمامی متغيرهائی خواهد بود كه آنها را ايجاد و در شئ Session ذخيره كرده ايم. با استفاده از متد Remove می توان يك متغير را از شئ Session حذف نمود. در مثال زير يك متغير Session با نام Reza حذف می گردد.
Session.Contents.Remove("Reza")

با استفاده از متد RemoveAll می توان تمامی متغيرهای ذخيره شده در يك Session را حذف نمود.
Session.Contents.RemoveAll

با استفاده از يك حلقه تكرار می توان تمامی مقادير ذخيره شده در مجموعه contents را مشاهده و يا عمليات مورد نظر خود را بر روی آنها انجام داد.
<%
Dim i
For Each i in Session.Contents
Response.Write(Session.Contents(i) & "<br>")
Next
%>

در صورتيكه نسبت به تعداد آيتم های ذخيره شده در مجموعه Contents شناخت لازم را نداشته باشيم، می توان بكمك ويژگی Count اين مشكل را حل كرد.
<%
Dim i, j
j = Session.Contents.Count
Response.Write("Session variables:" & j& "<br>")
For i=1 to j Response.Write(Session.Contents(i) & "<br>")
Next
%>
 

p4ym4n

کاربر ويژه
درس هشتم: آشنائی با شئ Application

کاربرد شئ Application و نحوه تعريف و بکارگيری متغير در آن
مجموعه ای از فايل های ASP كه بمنظور نيل به يك هدف خاص در كنار هم قرار می گيرند، يك برنامه ( Application ) را بوجود می آورند. شئ Application بمنظور تاثيرگذاری در نحوه ارتباط فايل های تشكيل دهنده يك برنامه استفاده می گردد. از شئ فوق بمنظور ذخيره سازی متغيرها و دستيابی به آنها از طريق هر يك از صفحات ASP موجود در يك برنامه استفاده می گردد ( مانند شئ Session ) . تفاوت اين شئ با شئ Session در اين است كه تمامی كاربران از يك شئ Application بصورت مشترك استفاده می كنند در صورتيكه شئ Session به ازای هر كاربر ايجاد و مقادير مورد نظر در رابطه با آن كاربر بخصوص را در خود نگهداری می كند.
شئ Application می بايست اطلاعاتی را در خود نگهداری نمايد كه در بالاترين سطح دسترسی در يک برنامه تحت وب قرار دارند. بعبارت ديگر شئ Application دربردارنده متغيرهای عمومی است که همه جلسات کاری کاربران از ابتدای اجرا تا پايان يک برنامه تحت وب، با آن متغيرها سروکار دارند ( نظير دستيابی مشترك به مسير يا کلمه عبور يك بانك اطلاعاتی). اين بدين معنی است كه ما می توانيم به اطلاعات ذخيره شده در شئ فوق از طريق هر يك از صفحات، دسترسی داشته باشيم. به عبارت ديگر می توان اطلاعات را از يك محل تغيير و اثر آن را از طريق صفحات ديگر مشاهده و استفاده نمود.
ذخيره و بازيابی مقادير متغير
شئ Application می بايست در فايل Global.asa ايجاد گردد. پس از ايجاد شئ فوق امكان دستيابی &dth=500 border=0 cellspacing=10>
The page cannot be found

The page you are looking for might have been removed, had its name changed, or is temporarily unavailable. Please try the following:

  • Make sure that the Web site address displayed in the address bar of your browser is spelled and formatted correctly.
  • If you reached this page by clicking a link, contact the Web site administrator to alert them that the link is incorrectly formatted.
  • Click the Back button to try another link.
HTTP Error 404 - File or directory not found.
Internet Information Services (IIS)

Technical Information (for support personnel)

  • Go to Microsoft Product Support Serv.4.0"
    Application("ActiveUsers")=1
    End Sub
    </Script>


    در مثال فوق، دو متغير Application ايجاد شده است. اولين متغير با نام DBDriver و دومين متغير با نام ActiveUsers است. جهت دستيابی به مقادير اين دو متغير از روش زير می توان استفاده كرد.
    There are <%Response.Write(Application("ActiveUsers"))%> active connections.

    بكمك يك حلقه تكرار و دستيابی به مجموعه Contents ، می توان مقادير شئ فوق را مشاهده نمود.
    <%
    Dim i
    For Each i in Application.Contents
    Response.Write(Application.Contents(i) & "<br>")
    Next
    %>

    در صورتيكه شناخت لازم در رابطه با تعداد آيتم های ذخيره شده در شئ فوق را نداشته باشيم، می توان از ويژگی Count استفاده نمود.
    <%
    Dim i
    Dim j
    j=Application.Contents.Count
    For i=1 to j
    Response.Write(Application.Contents(i) & "<br>")
    Next
    %>

    قفل نمودن يك برنامه
    با استفاده از متد Lock ، می توان يك برنامه را قفل نمود. زمانيكه يك برنامه قفل می گردد، كاربران قادر به تغيير متغيرهای شئ Application نخواهند بود. در چنين حالتی تنها يك ارتباط فعال با شئ فوق وجود خواهد داشت. جهت بازنمودن قفل می توان از متد Unlock استفاده كرد.
    <%
    Application.Lock
    'do some application object operations
    Application.Unlock
    %>

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

</SPAN>
 

p4ym4n

کاربر ويژه
درس نهم: مفهوم کاربردی برنامه در ASP کلاسيک

در اين مقاله سعی خواهد شد که مفهوم يک برنامه ASP و موارد مربوطه شرح داده شود. در انتها نيز يک مثال کاربردی از اين مفاهيم که مشخص نمودن تعداد کاربران فعال در يک وب سايت می باشد، را خواهيم ديد. در آغاز می بايست يک برنامه ASP يا يک Application را تعريف نموده و با مفهوم يک جلسه کاربر يا Session آشنا شويم.

تعريف يک برنامه ASP
يک برنامه ASP يا يک Application عبارت است از مجموعه ای از فايل های ASP (احتمالا بهمراه ديگر فايل های مورد نياز) که در يک شاخه يا يک دايرکتوری قرار دارند و منظور خاصی را برآورده می کنند. اين فايل ها ممکن است در زيرشاخه های مختلفی تحت شاخه اصلی دسته بندی شده باشند. يک برنامه ASP معمولا يک سايت وب يا بخشی از يک سايت وب را تشکيل می دهد. به عبارت ديگر يک سايت وب خود می تواند يک Application باشد که حاوی Application های ديگری هم هست. شروع اجرای يک Application معادل اولين فراخوانی يک فايل ASP از شاخه مربوطه است و توقف اجرای يک Application معادل متوقف نمودن وب سرور (در اينجا IIS) می باشد. بعبارت ديگر يک برنامه ASP يکبار اجرا می شود و يکبار هم خاتمه می يابد و در اين بين ممکن است کاربران متعددی از اين برنامه استفاده کنند و اينگونه نيست که به ازای مراجعه هر کاربر به وب سايت يا برنامه، اين برنامه اجرا شده و با خروج کاربر از آن، اجرای آن متوقف شود. درعوض به ازای مراجعه هر کاربر به وب سايت يا برنامه مورد نظر، يک Session جلسه کاری برای هر کاربر تشکيل می شود و با خروج کاربر از برنامه، Session مربوطه از بين می رود.

فايل Global.asa
هر بار كه يك Application و يا Session آغاز و يا خاتمه می يابد، يك برنامه ASP با يك رويداد مواجه می گردد. بمنظور سازماندهی و هدايت نحوه برخورد با رويدادهای فوق از يك فايل خاص با نام Global.asa استفاده می شود. محل استقرار فايل فوق درشاخه اصلی وب سايت يا برنامه ASP خواهد بود. مثلا در رابطه با يك وب سايت پيش فرض كه در زمان نصب IIS ايجاد می گردد، مسير مربوطه \Inetpub\wwwRoot خواهد بود. از طريق فايل فوق می توان گفت در زمانيكه يك Application اجرا و يا متوقف می گردد چه نوع عملياتی می بايست انجام گيرد. وضعيت فوق در رابطه با شئ Session نيز صدق می کند. در ادامه با توجه به حضور فعال دو شئ Application و Seesion در فايل فوق به بررسی مختصر آنها بهمراه صفات، متد و رويدادهای آنها كه در رابطه با موضوع اين مقاله است، خواهيم پرداخت.

شئ Application
شئ فوق زمانيكه يک برنامه ASP اجرا می گردد، ايجاد می شود. شئ فوق مسئوليت ذخيره سازی متغيرها و مقاديری را برعهده خواهد گرفت كه برای تمامی صفحات موجود در يك برنامه ASP قابل استفاده و دستيابی خواهند بود (Application Level). نقش شئ فوق نظير تعريف متغيرهای سراسری ( Global ) در يك برنامه كامپيوتری است كه برای تمامی توابع و روتين های موجود در آن برنامه قابل دستيابی خواهند بود. متدهای Lock و UnLock دو متد مهم از شئ Application بوده كه در برنامه ای كه در ادامه مشاهده خواهيد كرد از آنها استفاده شده است.

• متد Lock: متد فوق مسئول قفل نمودن شئ Application بوده تا اين اطمينان حاصل گردد كه صرفا يك صفحه در حال دستيابی به شئ فوق و تغيير متغييرهای مربوطه است. به كمك متد فوق اين تضمين بوجود خواهد آمد كه دو كاربر بصورت همزمان قادر به تغيير مقادير مربوطه نخواهند بود.
• متد UnLock: شئ Application را كه قبلا برای ممانعت از تغيير همزمان توسط دو كاربر ( صفحه ) قفل شده بود به حالت معمولی برگردانده و آماده استفاده توسط كاربر ديگر خواهد بود.

شئ Application دارای دو رويداد مهم OnStart و OnEnd است:
• رويداد OnStart: رويداد فوق زمانيكه برنامه ASP فعاليت خود را آغاز می نمايد، رخ می دهد. اين رويداد قبل از هر نوع پاسخ به درخواست كاربران و قبل از اينكه شئ Session مربوط به يك كاربر ايجاد گردد، فعال خواهد می شود. معمولا از رويداد فوق برای مقداردهی اوليه متغيرها، ايجاد اشياء ديگر و يا اجرای كدهای ديگر استفاده خواهد شد.
• رويداد OnEnd: اين رويداد پس از خاتمه فعاليت يك برنامه ASP ، رخ می دهد. رويداد فوق بعد از اينكه كدهای مربوط به رويداد OnEnd وابسته به شئ Session اجراء شدند ، فعال خواهد شد. تمامی متغيرهای موجود در شئ Application بعد از فعال شدن رويداد فوق از بين خواهند رفت.
• ذخيره و بازيابی مقادير در شئ Application: جهت ذخيره يك مقدار در يك متغير شئ فوق ميتوان يك متغير را ايجاد و مقدار مربوطه را در آن قرار داد. گرامر مقداردهی به يك متغير بصورت زير است :


Application("Variabel_Name") = Variabel_Value

مثلا دستور زير يك متغير با نام OnLine_User را ايجاد و مقدار صفر را به آن نسبت خواهد داد:

Application("OnLine_User") = 0

بمنظور بازيابی مقادير ذخيره شده در يك متغير از گرامر زير استفاده می شود:

Variabel_Value = Application("Variabel_Name")

مثلا دستور زير باعث نمايش مقدار متغير OnLine_User در خروجی خواهد شد.

<%= Application("OnLine_User") %>

شئ Session
شئ فوق برای هر كاربر بلافاصله پس از اولين درخواست برای يك صفحه ASP ايجاد می گردد. شئ فوق به ازای هر كاربرفعال شده و تا زمانيكه ارتباط كاربر قطع نشده و يا زمان مربوط به آن به سر نيامده ( TimeOut ) همچنان وجود خواهد داشت . اين شئ مسئول نگهداری متغيرها و مقاديری خواهد بود كه به ازای يك جلسه كاری كاربر مورد توجه بوده و صرفا برای آن كاربر بخصوص قابل استفاده خواهند بود (User Level). متغيرهای مربوط به شئ فوق دارای عملكردی مشابه متغيرهای محلی ( Local ) در يك برنامه كامپيوتری می باشد. شئ فوق دارای مجموعه ای از صفات (Property)، رويداد (Event) و متد (Method) بوده كه در ادامه به توضيح برخی از آنها می پردازيم.

• صفت TimeOut: مقدار صفت فوق هم قابل خواندن و هم قابل نوشتن ( تغيير) است. نوع مقادير مربوطه عدد صحيح می باشد. از طريق صفت فوق مدت زمان حيات يك Session بر حسب دقيقه مشخص می گردد. در صورتيكه در مدت زمان تنظيم شده كاربر صفحه خود را بازخوانی مجدد ( Refresh) ننموده و يا درخواست يك صفحه جديد را نداشته باشد، به حيات Session خاتمه داده می شود. مقدار پيش فرض اين صفت بيست دقيقه است. در موارديكه يك سايت دارای ترافيك بالا باشد، مقدار فوق می بايست كمتر از ميزان فوق در نظر گرفته شود.
• رويداد OnStart: اين رويداد زمانيكه جلسه كاری يك كاربر آغاز شد، فعال می گردد. رويداد فوق قبل از اينكه صفحه درخواستی كاربر ارسال گردد، اجراء خواهد شد. از رويداد OnStart بمنظور مقداردهی اوليه متغيرها، ايجاد اشياء و يا اجرای كدهای ديگر استفاده می گردد.
• رويداد OnEnd: اين رويداد زمانيكه جلسه كاری يك كاربر خاتمه می يابد، فعال می گردد. اين رويداد می تواند بلافاصله پس از سپری شدن زمان تنظيم شده توسط صفت TimeOut ، فعال گردد. پس از خاتمه يك جلسه كاری تمامی متغيرهای موجود در شئ Session از بين خواهند رفت. در صورتيكه بخواهيم جلسه كاری يك كاربر را با صراحت و قاطعيت و قبل از بسرآمدن زمان TimeOut خاتمه دهيم، می توان از متد Abandon استفاده نمود.

نمايش تعداد كاربران فعال يك وب سايت
اين برنامه دارای دو بخش است: بخش اول مجموعه دستوراتی است كه می بايست در فايل Global.asa قرار گرفته و بخش دوم مسئول نمايش تعداد كاربران فعال بر روی سايت است.

محتوای فايل Global.asa :

<Script Language="VBScript" Runat="Server">
Sub Application_OnStart
Application("OnLine_User") = 0
End Sub

Sub Session_OnStart
Session.Timeout = 15
Application.Lock
Application("OnLine_User") = Application("OnLine_User") + 1
Application.Unlock
End Sub

Sub Session_OnEnd
Application.Lock
Application("OnLine_User") = Application("OnLine_User") - 1
Application.Unlock
End Sub

Sub Application_OnEnd
End Sub
</Script>
نمايش تعداد کاربران فعال در سايت:

You are one of the <%=Application("OnLine_User")> people currently browsing this site.​



 

p4ym4n

کاربر ويژه
کار با فايل ها از طريق نحوه محاسبه تعداد دفعات مراجعه به يك صفحه وب

--------------------------------------------------------------------------------
برای مشخص نمودن تعداد دفعات مراجعه به يك صفحه وب روش های متفاوتی وجود دارد كه شايد خوانندگان گرامی با برخی از آنها نيز آشنائی داشته باشند. هدف اين مقاله معرفی يكی ديگر از روش های موجود بكمك تكنولوژی ASP است. در اين مقاله سعی می شود مطالب بگونه ای بيان گردد كه از ابعاد متفاوت بتواند مفيد واقع شده و مخاطبان خود را در رده های متفاوت اطلاعاتی ارضاء نمايد. بنابراين لازم ديدم كه در ابتدا توضيحات مختصری در رابطه با اشياء ( Objects ) و متدهائی ( Methods ) كه ما را جهت رسيدن به خواسته هايمان كمك می كند، داشته باشم.

اشياء استفاده شده
در برنامه ای كه در ادامه مشاهده خواهيد كرد از دو شئ عمده استفاده شده است: Scripting.FileSystemObject و TextStream. دو شئ فوق مربوط به خانواده بزرگ Scripting Runtime Library می باشند. شئ FileSystemObject امكان دستيابی به سيستم فايل موجود بر روی كامپيوتر را فراهم می سازد. در اين راستا امكان انجام عمليات متفاوتی بر روی فايل های متنی، فولدرها، درايوها و فراهم می گردد. شئ فوق را می توان از طريق كدهای نوشته شده به زبان VBScript كه در يك فايل ASP قرار خواهند گرفت، استفاده نمود. شئ TextStream تسهيلاتی جهت پردازش ترتيبی بر روی يك فايل را فراهم می نمايد. بديهی است فايل های متنی در اين راستا جايگاه ويژه خود را خواهند داشت. معمولا از برخی متدها نظير CreateTextFile و يا OpenTextFile استفاده می شود تا پس از فعال شدن بعنوان خروجی يك شئ TextStream را برگردانند.

فكر می كنم كه مثال زير در اين مقطع ما را با نحوه عملكرد اين دو شئ بهتر آشنا كرده و يك قدم موثر جهت رسيدن به هدف اصلی اين مقاله ( نوشتن يك برنامه ASP برای مشخص نمودن تعداد دفعات مراجعه به يك صفحه ) را برداشته باشيم.

<%
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject)
Set MyFile= fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test)
MyFile.Close
%>
در مثال فوق تابع CreateObject پس از فعال شدن يك شئ از نوع FileSystemObject را ايجاد می كند. در ادامه متد CreateTextFile صدا زده شده و فايل (testfile.txt) را بعنوان يك شئ TextStream ايجاد می كند و در ادامه بكمك متد WriteLine مربوط به شئ TextStream يك خط (This is a test) در فايل ايجاد شده، نوشته خواهد شد.

متدهای استفاده شده
در برنامه ای كه در ادامه خواهد آمد از چندين متد استفاده شده است كه لازم است در اين مرحله با عملكرد يكايك اين متدها آشنا شويم.

- متد MapPath: در زمانيكه با فايل های ذخيره شده بر روی يك وب سايت كار می كنيم، اغلب علاقه منديم كه قادر به دستيابی مسير واقعی و فيزيكی فايل ها در مقابل مسيرهای منطقی باشيم. خوانندگان گرامی می دانند كه مسيرها بر روی يك وب سايت می توانند بصورت فيزيكی و يا منطقی باشند. مسيرهای منطقی به مسيرهائی اطلاق می شود كه بعنوان جزئی در ساختار سلسله مراتبی وب سايت كه مديريت وب ( IIS يا PWS ) ايجاد می كند، بوجود می آيند (Inetpub\wwwRoot). مسيرهای فيزيكی دقيقا مشابه دادن مسير مربوط به يك فايل بر روی هر نقطه از فضای ذخيره سازی خواهند بود. مثلا در صورتيكه متد فوق را بصورت زير صدا بزنيم:

Server.Mappath("/iishelp/default.htm")

مقدار زير برگردانده می شود:

"C:\winnt\help\iishelp\default.htm"

متد فوق يك رشته ( مشخص كننده نام فايل است ) را بعنوان ورودی گرفته و مسير كامل آن را برمی گرداند.

- متد OpenTextFile: متد فوق با هدف باز نمودن يك فايل برای انجام عمليات نوشتن، خواندن و يا اضافه كردن به محتويات آن مورد استفاده قرار گرفته و پس از فعال شدن يك شئ از نوع TextStream را بر می گرداند. متد فوق دارای گرامری مشابه زير است:

OpenTextFile(filename,ioMode,create,format)

متد فوق يك فايل با نام filename را ايجاد و يا يك فايل موجود با چنين نامی را باز خواهد كرد ويك شئ TextStream بر می گرداند. IoMode، هدف از باز نمودن فايل را مشخص می كند. در صورتيكه فايل برای خواندن باز شود forReading = 1 ( پيش فرض )، در صورتيكه برای نوشتن باز شود forWriting = 2 و اگر برای اضافه كردن باز شود forAppending = 8 خواهد بود. پارامتر create، در صورتيكه قصد نوشتن و يا افزودن اطلاعات به فايلی را داشته باشيم كه موجود نباشد مقدار TRUE را گرفته و در غير اينصورت مقدار آن FALSE ( پيش فرض ) خواهد بود. ودر نهايت پارامتر format، قالب اطلاعاتی را كه می بايست از فايل خوانده شده و يا در فايل نوشته شود، مشخص می كند. در صورتيكه اين پارامتر مقدار صفر را دارا باشد قالب يك فايل Ascii در نظر گرفته شده و اگر مقدار 1- را داشته باشد، قالب فايل بصورت Unicode در نظر گرفته شده و در نهايت اگر اين پارامتر مقدار 2- را دارا باشد قالب آن بر اساس فرمت پيش فرض سيستم در نظر گرفته خواهد شد.

- متد CreateTextFile: متد فوق با هدف ايجاد يك فايل بر روی محيط ذخيره سازی مورد استفاده قرار گرفته و پس از فعال شدن يك شئ از نوع TextStream را برمی گرداند. متد فوق دارای گرامری مشابه زير است:

CreateTextFile(filename , overwrite , unicode )

متد فوق فايلی با نام filename را ايجاد می كند. در صورتيكه فايلی با همين نام موجود باشد و مقدار پارامتر دوم يعنی overwrite نيز TRUE باشد فايل قبلی حذف و فايل جديد ايجاد می گردد. مقدار پيش فرض پارامتر فوق FALSE است. پارامتر سوم اختياری است و قالب فايل جديد را مشخص خواهد كرد. اگر مقدار اين پارامتر TRUE باشد يك فايل متن unicode ايجاد می گردد. مقدار پيش فرض پارامتر فوق FALSE است.

- متد های مربوط به شئ TextStream: در برنامه ای كه در ادامه خواهد آمد از دو متد ReadLine و WriteLine(String) استفاده شده است كه اولی يك سطر از فايل را خوانده و بصورت يك رشته برمی گرداند و دومی رشته داده شده بعنوان پارامتر را در فايل بهمراه يك كاراكتر newline اضافه می كند (نوشتن).

توابع استفاده شده
تابع Trim: در برنامه ای كه در ادامه مشاهده خواهيد كرد از تابع فوق استفاده شده است. اين تابع جزء توابع كتابخانه ای VSBcript بوده و تمامی فضاهای خالی (Spaces) موجود در سمت چپ و راست رشته را حذف و رشته جديد را برمی گرداند.

و اما برنامه Hins.ASP كه تعداد دفعات مراجعه به يك صفحه را مشخص می سازد.

<%
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
HitsFile = Server.MapPath ("\") & "\hits.txt"
Set InStream= FileObject.OpenTextFile (HitsFile,1,false,0)
OldHits = Trim(InStream.ReadLine)
NewHits = OldHits + 1
Set OutStream= FileObject.CreateTextFile (HitsFile,True,False)
OutStream.WriteLine(NewHits)
%>
This page has been accessed <%=NewHits%> times.
در مثال فوق فايل hits.txt در ريشه وب سايت (Inetpub\wwwRoot) ايجاد شده و مقدار صفر در آن قرار گرفته است (حا لت اوليه).
 

p4ym4n

کاربر ويژه
درس يازدهم: تشخيص مشخصات کاربر

تشخيص نوع مرورگر، سيستم عامل و IP كاربران اينترنت و ساير اطلاعات مرتبط

--------------------------------------------------------------------------------
مرورگرها برنامه هائی هستند كه كاربران اينترنت با استفاده از آنان قادر به استفاده از وب سايت ها و منابع موجود در آنها می باشند. جايگاه اين نوع از برنامه ها در يك نرم افزار تحت وب يا اينترنت بسيار حائز اهميت بوده چراكه مسئوليت ايجاد محيط لازم جهت ارتباط با كاربران بر عهده آنها سپرده شده است.

مرورگرها درخواست كاربران را بر اساس پروتكل HTTP برای سرويس دهنده وب ارسال می دارند. پروتكل فوق زبان گفتمان مشترك بين مرورگران وب بعنوان متقاضيان و سرويس دهندگان وب بعنوان پاسخ دهندگان به درخواست ها است. مرورگرها دارای امكانات و پتانسيل های زيادی بوده و در فرآيند پياده سازی يك برنامه تحت وب يا اينترنت نمی توان از كنار آنها بسادگی گذشت. با شناخت پتانسيل ها و نوع رفتار يك مرورگر طراحان نرم افزارهای اينترنت قادر به خلق آثار ارزشمند و پويائی خواهند بود كه قطعا در استمرار موفقيت يك نرم افزار از نقطه نظر جذب مخاطبان خود تاثير گذار خواهد بود. بهرحال صفحات وب درخواستی كاربران اينترنت از طريق اين نوع نرم افرارها به نمايش درخواهد آمد.

يكی از مشكلات موجود در رابطه با طراحی صفحات وب، استفاده از مرورگرهای گوناگون توسط كاربران اينترنت است. در اين رابطه عمده رقابت بين دو مرورگر متعلق به شركت های ماكروسافت (IE يا Internet Exploere) و نت اسكيپ (Netscape) است. استانداردهای تعريف شده توسط هر يك از مرورگرهای فوق با يكديگر متفاوت است. مثلا مرورگر شركت ماكروسافت از كنترل های اكتيوايكس (ActiveX) و زبان Vbscript بعنوان زبان پيش فرض بر روی مرورگرها جهت تزريق توان عملياتی بر روی سرويس گيرندگان استفاده می كند در حاليكه مرورگر شركت نت اسكيپ از زبان جاوااسكريپت بعنوان پيش فرض در اين زمينه استفاده و امكان استفاده از كنترل های اكتوايكس نيز صرفا از طريق نصب يك Plug-in امكان پذير خواهد بود.

پروتكل ها و انشعابات لازم در خصوص بكارگيری HTML پويا (DHTML) و Cascading Style Sheet يا CSS در هر يك از مرورگرهای فوق شرايط خاص خود را دارد. بهرحال آگاهی از نوع مرورگر بخدمت گرفته شده توسط يك كاربر اينترنت و پارامترهای مهم آن در پياده سازی يك سايت موفق و با توجه به طيف گسترده كاربران اينترنت بسيار حائز اهميت خواهد بود. مثلا در صورتيكه يك صفحه وب را با استفاده از DHTML طراحی كرده باشيم و مرورگر ملاقات كننده سايت امكان استفاده از اين ويژگی را نداشته باشد تكليف چيست؟ در اين زمينه شايد بهترين روش پس از تشخيص نوع مرورگر كاربر مورد نظر، ارجاع آن به صفحه ای ديگر است كه همان امكانات را در اختيار وی بدون استفاده از تگ های DHTML بدهد.

فراموش نكنيم كه تعداد و نوع مرورگرهائی كه امروزه توسط كاربران اينترنت استفاده می شود به دو نمونه گفته شده ختم نشده و مرورگرهای WebTV Browser،AOL custom Browser،Lynx ( يك مرورگر متنی تحت يونيكس ) و Opera نمونه های ديگری از دنيای وسيع مرورگرها می باشند.

مرورگرها در زمان درخواست يك صفحه از يك وب سايت، اطلاعاتی نيز راجع به خود بهمراه درخواست ارسال ميدارند اين اطلاعات با عنوان User-Agent String معرفی شده و شامل نوع و نسخه مرورگر و سيستم عامل مربوطه است. اين اطلاعات در مجموعه ServerVariables و تحت نام متغيری با نام HTTP_USER_AGENT قرار خواهند گرفت. اطلاعات ذخيره شده در مجموعه ServerVariables بسيار وسيع بوده و در اين مقاله به بررسی آندسته از اطلاعاتی كه به موضوع مقاله مرتبط است خواهيم پرداخت.

مثال ۱ - در اين مثال با استفاده از مجموعه Server Variables وابسته به شی Request، نوع مرورگر، سيستم عامل و IP ملاقات كننده سايت تشخيص داده می شود. ( در مثال می توان برخی از مقايسه ها را در صورت ضرورت حذف نمود و برنامه را برای موارد خاص نوشت)

<%
ua = Request.ServerVariables("HTTP_USER_AGENT")
os = Request.ServerVariables("HTTP_UA_OS")
If Instr(ua, "MSIE") Then
If Instr(ua, "MSIE 5.") Then
Browser = "Microsoft Internet Explorer 5.x"
Elseif Instr(ua, "MSIE 4.") Then
Browser = "Microsoft Internet Explorer 4.x"
Elseif Instr(ua, "MSIE 3.") Then
Browser = "Microsoft Internet Explorer 3.x"
If Instr(ua, "MSIE 3.02") Then
Browser = "Microsoft Internet Explorer 3.02"
End If
Else
Browser = "Microsoft Internet Explorer"
End If
ElseIf Instr(ua, "Mozilla") and Instr(ua, "compatible") = 0 Then
If Instr(ua, "Mozilla/4") Then
Browser = "Netscape Navigator 4.x"
Elseif Instr(ua, "Mozilla/3") Then
Browser = "Netscape Navigator 3.x"
Else
Browser = "Netscape Navigator"
End If
End If
If Instr(ua, "Windows 95") or Instr(ua, "Win95") Then
System = "Windows 95"
Elseif Instr(ua, "Windows 98") or Instr(ua, "Win98") Then
System = "Windows 98"
Elseif Instr(ua, "Windows 3.1") or Instr(os, "Win16") Then
System = "Windows 3.x/Windows NT 3.x"
Elseif Instr(ua, "NT") or Instr(ua, "NT") Then
System = "Windows NT"
Elseif Instr(ua, "Mac") Then
System = "Mac"
If Instr(ua, "PowerPC") or Instr(ua, "PPC") Then
System = "Mac PPC"
Elseif Instr(ua, "68000") or Instr(ua, "68K") Then
System = "Mac 68K"
End If
Elseif Instr(ua, "X11") Then
System = "UNIX"
End If
%>
You are using <%=Browser%><br>
You are using : <%=System%> operating system<br>
Your IP is: <%=Request.ServerVariables("Remote_Addr")%>
مثال ۲ - در اين مثال با استفاده ازمجموعه Server Variables وابسته به شی Request، اطلاعاتی نظير نام سرويس دهنده، زبان مرورگر، و ساير اطلاعات ذيربط نمايش داده می شود.

your Server name is <%=Request.ServerVariables("Server_Name")%><br>
your browser language is <%=Request.ServerVariables("HTTP_Accept_Language ") %><br>
your server ip is <%=Request.ServerVariables("Remote_Host")%><br>
your local address is <%=Request.ServerVariables("Local_Addr")%><br>
your path info is <%=Request.ServerVariables("Path_Info")%><br>
your server port is <%=Request.ServerVariables("Server_Port")%><br>
your path translated is <%=Request.ServerVariables("Path_Translated")%>

مثال ۳ - در اين مثال پس از نمايش محتويات رشته HTTP_USER_AGENT، امكان ارتقای مرورگر برای كاربران از طريق سايت ماكروسافت فراهم شده و در صورتيكه نسخه مرورگر IE بيشتر از چهار باشد، به آنها اعلام خواهد شد كه امكان استفاده از تگ های DHTML را دارا خواهند بود.

<%
UA = Request.ServerVariables("HTTP_USER_AGENT")
Response.Write " The User Agent String is <b> " & UA & "</B><p>"
If Instr(UA, "MSIE") Then
Response.Write " To Upgrade your browser go to " & "<A HREF=" & chr(34) & "http://www.microsoft.com/ie/" & chr(34) & " >http://www.microsoft.com/ie/</A></P>"
BrowserVersion = Cint(MID(UA, Instr(UA, "MSIE") + 5, 1))
If BrowserVersion >= 4 Then
Response.Write " You can use Microsoft Dynamic HTML "
End If
End If
%>
پس از تشخيص نسخه مرورگر می توان آنها را به صفحات ديگر Redirect نمود. در صورت افزودن دستورات زير به برنامه فوق، در صورتيكه نسخه مرورگر چهار به بعد باشد، default.asp موجود در فهرست DHTMLSupport اجرا شده و در صورتيكه كاربر از مرورگری استفاده می كند كه نسخه آن از چهار كمتر می باشد و با توجه به اينكه اين نسخه ها، امكان DHTML را دارا نمی باشند، برای اين كاربر بخصوص default.asp را از فهرست NonDHTML فعال خواهيم كرد.

If BrowserVersion >= 4 Then
Response.Redirect "/DHTMLSupport/default.asp"
Else
Response.Redirect "/NonDHTML/default.asp"
End
 

p4ym4n

کاربر ويژه
شئ ها در ASP

بررسى اشياء موجود در ASP 3.0 به همراه شرح هر شئ

--------------------------------------------------------------------------------
ASP شامل تعدادى از اشياء تعبيه شده در آن است كه باعث افزايش قدرت اسكريپتها ميشود. در زير مرور مختصرى بر اشياء موجود در ASP داريم. در ASP 3.0 مجموعا دوازده شيئ وجود دارد كه شش تاى آنها بيشترين كاربرد را دارند.

Application : اين شيئ كه يكى از اشياء پر كاربرد در ASP است، براى ذخيره كردن متغيرها و نيز دستيابى به متغيرها از هر صفحه ASP استفاده ميشود. براى تمام كاربران فقط يک شيئ Application در سرور ساخته ميشود. يک Application مجموع چند صفحه ASP است كه اين صفحات، باهم، براى رسيدن به اهداف مشخصى كار مى كنند. اين شيئ، يک شيئ عمومى است و اطلاعاتى را كه مى خواهيد در چند صفحه از ASP بكار ببريد، يكجا بايد در اين شيئ ذخيره كنيد. ( مانند بانكهاى اطلاعاتى )

Session : اين شيئ نيز يكى از اشياء پر كاربرد در ASP است. شيئ Session براى ذخيره كردن اطلاعات يا تغيير تنظيمات براى هر جلسه كاربرى استفاده ميشود. هر جلسه كاربرى عبارتست از مدت زمانى كه يک كاربر از زمان ورود به يک صفحه تا زمانى كه آن صفحه را ترک ميكند صرف ميكند.
متغيرهايى كه در اين شيئ ذخيره ميشوند، اطلاعاتى را درباره يک كاربر نگه مى دارند و از همه صفحات ASP در يک پروسه كارى قابل دسترس هستند. در هنگام شروع يک جلسه كاربری، براى هر كاربر جديد، يک شيئ Session در سرور ساخته ميشود و با پايان يافتن يک جلسه كاربری، آن شيئ نيز خراب ميگردد.

Server : اين شيئ براى دسترسى به خاصيتها و متدهاى روى سرور، استفاده ميشود.

Response : از اين شيئ براى فرستادن خروجى از اطلاعات ورودى كاربر، به مرورگر استفاده ميشود. متد write كه يكى از پركاربردترين متدها در ASP است، براى نوشتن اطلاعات روى مرورگر استفاده ميشود.

Request : اين شيئ و شيئ Response معمولا باهم به كار برده ميشوند. وظيفه اين شيئ دريافت اطلاعات از كاربر است.

Dictionary : اين شيئ نيز به نوعى براى ذخيره كردن اطلاعات بكار ميرود. شما ميتوانيد به وسيله اين شيئ يک كلمه كليدى را به هر تكه از اطلاعات بچسبانيد. اين شيئ هنگام بازيابى اطلاعات، اطلاعاتى را كه شما ذخيره كرديد را به صورت Dictionary با كلمات كليدى برمى گرداند.

Drive : اين شيئ براى دستيابى به خاصيتهاى يک ديسک سخت روى شبكه استفاده ميشود.

File : اين شيئ براى دستيابى به خاصيتهاى يک فايل، مانند : Copy & Delete, Remove استفاده ميشود.

File System Object : اين شيئ براى دسترسى به فايلهاى سيستم، روى سرور استفاده ميشود. اين شيئ ميتواند فايلها، مسير فايلها و شاخه ها را دستكارى كند و اطلاعات سيستم را دريافت كند.

Folder : اين شيئ براى دسترسى به خاصيتهاى يک شاخه استفاده ميشود.

Text Stream : اين شيئ براى دسترسى به محتواى يک فايل استفاده ميشود.

ASP Error : اين شيئ يكى از ابزار ASP 3.0 است و فقط در IIS 5.0 قابل استفاده است. اين شيئ براى نمايش دادن اطلاعات دقيق، از هر اشتباه كه در پروسه اجراى اسكريپتهاى ASP رخ ميدهد استفاده ميشود. اين اطلاعات فقط به وسيله متد Server.getlasterror قابل دسترسى هستند.

اين 12 شيئ، اشياء تعبيه شده در ASP هستند كه شما تا اينجا با كار و وظيفه هر يک به طور مختصر آشنا شديد. انشاءالله در مقالات بعدى درباره متدها و خاصيتهاى هر يک از اشياء توضيحات مفصل به همراه كدهاى نمونه آورده خواهد شد.
 

p4ym4n

کاربر ويژه
بررسى اشياء موجود در ASP 3.0 به همراه شرح هر شئ

--------------------------------------------------------------------------------
ASP شامل تعدادى از اشياء تعبيه شده در آن است كه باعث افزايش قدرت اسكريپتها ميشود. در زير مرور مختصرى بر اشياء موجود در ASP داريم. در ASP 3.0 مجموعا دوازده شيئ وجود دارد كه شش تاى آنها بيشترين كاربرد را دارند.

Application : اين شيئ كه يكى از اشياء پر كاربرد در ASP است، براى ذخيره كردن متغيرها و نيز دستيابى به متغيرها از هر صفحه ASP استفاده ميشود. براى تمام كاربران فقط يک شيئ Application در سرور ساخته ميشود. يک Application مجموع چند صفحه ASP است كه اين صفحات، باهم، براى رسيدن به اهداف مشخصى كار مى كنند. اين شيئ، يک شيئ عمومى است و اطلاعاتى را كه مى خواهيد در چند صفحه از ASP بكار ببريد، يكجا بايد در اين شيئ ذخيره كنيد. ( مانند بانكهاى اطلاعاتى )

Session : اين شيئ نيز يكى از اشياء پر كاربرد در ASP است. شيئ Session براى ذخيره كردن اطلاعات يا تغيير تنظيمات براى هر جلسه كاربرى استفاده ميشود. هر جلسه كاربرى عبارتست از مدت زمانى كه يک كاربر از زمان ورود به يک صفحه تا زمانى كه آن صفحه را ترک ميكند صرف ميكند.
متغيرهايى كه در اين شيئ ذخيره ميشوند، اطلاعاتى را درباره يک كاربر نگه مى دارند و از همه صفحات ASP در يک پروسه كارى قابل دسترس هستند. در هنگام شروع يک جلسه كاربری، براى هر كاربر جديد، يک شيئ Session در سرور ساخته ميشود و با پايان يافتن يک جلسه كاربری، آن شيئ نيز خراب ميگردد.

Server : اين شيئ براى دسترسى به خاصيتها و متدهاى روى سرور، استفاده ميشود.

Response : از اين شيئ براى فرستادن خروجى از اطلاعات ورودى كاربر، به مرورگر استفاده ميشود. متد write كه يكى از پركاربردترين متدها در ASP است، براى نوشتن اطلاعات روى مرورگر استفاده ميشود.

Request : اين شيئ و شيئ Response معمولا باهم به كار برده ميشوند. وظيفه اين شيئ دريافت اطلاعات از كاربر است.

Dictionary : اين شيئ نيز به نوعى براى ذخيره كردن اطلاعات بكار ميرود. شما ميتوانيد به وسيله اين شيئ يک كلمه كليدى را به هر تكه از اطلاعات بچسبانيد. اين شيئ هنگام بازيابى اطلاعات، اطلاعاتى را كه شما ذخيره كرديد را به صورت Dictionary با كلمات كليدى برمى گرداند.

Drive : اين شيئ براى دستيابى به خاصيتهاى يک ديسک سخت روى شبكه استفاده ميشود.

File : اين شيئ براى دستيابى به خاصيتهاى يک فايل، مانند : Copy & Delete, Remove استفاده ميشود.

File System Object : اين شيئ براى دسترسى به فايلهاى سيستم، روى سرور استفاده ميشود. اين شيئ ميتواند فايلها، مسير فايلها و شاخه ها را دستكارى كند و اطلاعات سيستم را دريافت كند.

Folder : اين شيئ براى دسترسى به خاصيتهاى يک شاخه استفاده ميشود.

Text Stream : اين شيئ براى دسترسى به محتواى يک فايل استفاده ميشود.

ASP Error : اين شيئ يكى از ابزار ASP 3.0 است و فقط در IIS 5.0 قابل استفاده است. اين شيئ براى نمايش دادن اطلاعات دقيق، از هر اشتباه كه در پروسه اجراى اسكريپتهاى ASP رخ ميدهد استفاده ميشود. اين اطلاعات فقط به وسيله متد Server.getlasterror قابل دسترسى هستند.

اين 12 شيئ، اشياء تعبيه شده در ASP هستند كه شما تا اينجا با كار و وظيفه هر يک به طور مختصر آشنا شديد. انشاءالله در مقالات بعدى درباره متدها و خاصيتهاى هر يک از اشياء توضيحات مفصل به همراه كدهاى نمونه آورده خواهد شد.
 

p4ym4n

کاربر ويژه
طريقه ايجاد يك شمارنده برای شمارش تعداد كابران فعال در صفحه بوسيله فايل global.asa

--------------------------------------------------------------------------------
در اين مقاله سعی داريم يك شمارنده برای شمارش تعداد كاربرانی كه در يك لحظه در يك صفحه فعال هستند درست كنيم. فايل global.asa برای يك برنامه اختياری است كه ميتواند شامل معرفی كردن اشيا، متغيرها و متدهايی باشد كه می توانند از هر صفحه در ASP دسترس پذير باشند. نكته مورد توجه در مورد اين فايل اين است كه حتما بايد اين فايل در ريشه يك برنامه ASP ذخيره شود و هر بار كه اين فايل تغيير می كند سرور به راه اندازی مجدد برای اعمال تنظيمات اين فايل نياز دارد.

در فايل global.asa چهار رويداد استاندارد وجود دارد كه عبارتند از :

• application_onstart : اين رويداد زمانی كه اولين كاربر وارد اولين صفحه از سايت شود رخ می دهد. همچنين هنگامی كه سرور reboot شود نيز اين رويداد رخ می دهد.
• application_onend : زمانی كه آخرين كاربر از سايت خارج شد و يا به عبارتی هيچ كاربر فعالی در سايت وجود نداشت اين رويداد رخ می دهد.
• session_onstart : با ورود هر كاربر به يكی از صفحات ASP اين رويداد رخ می دهد.
• session_onend : با خروج كاربر از صفحه ASP و اتمام يك جلسه كاربری اين رويداد رخ می دهد.

يك جلسه كاربری هنگامی كه كاربر ديگر صفحه ای را درخواست نكند و يا مرورگر خود را ببندد و يا به سايت ديگری برود تمام می شود.

بعد از آشنايی با اين فايل می خواهيم بوسيله آن يك شمارنده برای يك صفحه بسازيم. يك فايل بنام global.asa در ريشه درست می كنيم و كد زير را داخل آن می نويسيم.

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub

Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script>
در فايلی كه بالا ساختيم ابتدا مقدار متغير visitors را صفر قرار داديم. سپس بوسيله رويداد session_onestart با ورود هر كاربر به صفحه يك واحد به متغير visitors اضافه كرديم و در پايان نيز بوسيله رويداد session_onend با خروج هر كاربر يك واحد از متغيرمان كم كرديم. متد lock برای application برای آن است كه از تغيير دادن متغيرها بوسيله ساير كاربران جلوگيری شود. بعد از اين يك فايل با نام visitor.asp بسازيد و كد زير را در آن تايپ كنيد.

<html>
<head></head>
<body>
<p>
There are <%response.write(Application("visitors"))%>
online now!
</p>
</body></html>
در اين كد نيز بوسيله متد write از شی response مقدار متغير visitor را روی مرورگر نمايش می دهيم.​



 

p4ym4n

کاربر ويژه
راهكارهائی برای بهبود طراحی صفحات ASP – بخش اول

مقدمه
امروزه وب بعنوان يك واقعيت انكار ناپذير سايه خود را در تمامی زندگی اجتماعی، اقتصادی و بشريت انداخته و دارای رشدی بسيار سريع در زمينه بكارگيری تكنولوژی های جديد است. همزمان با اين رشد اعجازگونه، وب سايت ها از حالت اوليه خود كه كوچك و عمدتا ايستا بوده خارج شده و بسمت حجيم شدن و پويائی حركت كردند. امروزه بر روی يك وب سايت نرم افزارهای متعددی اجراء می شوند تا پاسخگوی نياز كاربران خود بوده و در اين دنيای رقابت، دليلی برای بودن خود را داشته باشند. دراين مسير تكنولوژی های متعددی نظير تكنولوژی Dynamic Scripting مانند ASP بوجود آمد تا طراحان يك وب سايت را جهت طراحی يك وب سايت پويا ياری رسانند. طراحی و پشتيبانی يك وب سايت پويا از چالش های اصلی در اين زمينه بوده كه اگر تدابير خاصی اتخاذ نگردد و طراحان مقيد به رعايت آنها نباشند شايد در ادامه حيات يك وب سايت، در باتلاقی فرو رويم كه تاوان خروج از آن، گذشت از برخی سرويس های ارائه شده روی سايت و يا از دست دادن زمان باشد. از دست دادن زمان در دنيای امروز يعنی سرودن شعری ( مرثيه ای ) برای نبودن خود!

در اين مقاله سعی خواهد شد كه به برخی از اين تدابير از ديدگاه مهندسی نرم افزار اشاره شود. استفاده از SSI، استفاده از مزايای كلاس های Vbscript، استفاده از متدهای Server.Execute و Server.Transfer نمونه هائی از اين تدابير جهت طراحی صفحات ASP ماجولار با قابليت استفاده مجدد (Reusable) است.

Server Side Includes
يكی از مهمترين رويكردهای موجود در زمينه طراحی صفحات ASP ماجولار استفاده از SSI است. از SSI برای صادر نمودن كدهای يك صفحه ASP درون يك صفحه ASP ديگر استفاده می شود. ويژگی فوق به ما اين امكان را خواهد داد كه صفحات ASP مجزائی (که درون هر يك توابع و يا كلاس های خاصی قرار گرفته است) را طراحی كرده و در صفحات ASP ديگر كه به عملكرد برخی از توابع و يا كلاس های مربوطه نياز باشد، آنها را استفاده نمائيم ( كد يك بار نوشته خواهد شد و از آن به دفعات و به تعداد مورد نياز استفاده خواهد شد). فرض كنيد تابعی نوشته شده است كه وظيفه آن محاسبه ميزان ماليات فروش يك كالا باشد. اگر به عملكرد چنين تابعی در چندين صفحه ASP نياز داشته باشيم، می بايست از عمليات معروف بريدن / چسباندن (Cut & Paste) استفاده كرد. شايد اين كار زمانيكه يك سايت ساده را داشته باشيم ميسر باشد ولی در يك سايت واقعی با حجم عمليات بالا، طاقت فرسا و گاه غيرممكن بنظر می رسد. در چنين وضعيتی می توان تابع فوق را در يك فايل مجزا قرار داده و با استفاده SSI در هر يك از صفحات ASP مورد استفاده قرار داد. فرض كنيد تابع زير قيمت خام يك كالا را بعنوان پارامتر ورودی گرفته و پس از محاسبه ميزان ماليات فروش بر آن، قيمت نهائی را محاسبه و آن را به برنامه يا تابع صدا زننده برگرداند.

Function ComputeTax(PureCost)
Const Tax_Rate= 0.744
ComputeTax = PureCost + PureCost*Tax_Rate
End Function

اگر تابع فوق بصورت جداگانه در هر يك از صفحات ASP يك سايت فروش كالا قرار گرفته باشد و در ادامه حيات سايت قصد تغيير ميزان ماليات بر فروش را داشته باشيم، چه اتفاقی خواهد افتاد؟ می بايست يكايك صفحات ASP را انتخاب، بررسی و در صورت استفاده از تابع فوق، تغييرات لازمه را اعمال نمود. يكی از بهترين روش های موجود جهت برخورد با اينگونه مسائل در زمان طراحی يك وب سايت، استقرار تابع فوق در يك فايل مجزا ( فرضا ComputeTax.ASP ) است. پس از انجام اين كار اولا زمينه استفاده از تابع فوق برای تمامی صفحات ديگر بكمك SSI فراهم شده و ثانيا در صورت نياز به برخی تغييرات، بسهولت می توان به اين هدف رسيد ( اعمال تغييرات در يك نقطه و انتشار تغييرات در کل سايت ).

زمانيكه از SSI برای صدور محتويات يك فايل به فايل ديگر استفاده می كنيم، متن و يا محتويات فايل ضميمه شده، دقيقا در محلی از فايل ميزبان كه از SSI استفاده كرده قرار خواهد گرفت. در صورتيكه بخواهيم ( كه قطعا می خواهيم ) از متغيرهای موجود در فايل ضميمه شده در فايل ميزبان ( فايلی كه از قابليت SSI استفاده می كند ) استفاده نمائيم می بايست از دستور Option Explicit در فايل فوق استفاده نمائيم. كدهای موجود در فايل ضميمه شده می بايست بين <% %> و يا مجموعه <SCRIPT RUNAT=SERVER LANGUAGE="VBSCRIPT"> و </SCRIPT> قرار گيرند.

فرض كنيد تابع نوشته شده قبلی را در فايلی با نام ComputeTax.asp ذخيره كرده و فايل فوق را در يک دايرکتوری با نام Utils بر روی سرويس دهنده وب قرار داده باشيم. محتويات فايل فوق بصورت زير خواهد بود.

<%
Function ComputeTax(PureCost)
Const Tax_Rate= 0.744
ComputeTax = PureCost + PureCost*Tax_Rate
End Function
%>

در ادامه برای هر يك از صفحات ASP كه به تابع فوق نياز داشته باشند، می بايست از يك SSI استفاده نمود. مثال زير نحوه استفاده از تابع فوق را در يك فايل ديگر نشان می دهد:

<% @LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--#include virtual="/Utils/ComputeTax.ASP"-- >
<%
Dim PureCost
PureCost = 47.47
Response.Write " Cost Before Sales Tax : " & PureCost
Response.Write "Cost After sales Tax : " & ComputeTax (PureTax)
%>

برای استفاده از SSI در يك فايل از دو شكل عمومی زير می توان استفاده نمود:

<!-- #include file="filename" -- >
<!-- #include virtual="filename" -- >

در صورتيكه از كلمه file استفاده شود، موقعيت filename نسبت به دايرکتوری كه فايل صدازننده ASP، قرار دارد سنجيده شده و در صورت استفاده از كلمه virtual ، موقعيت filename نسبت به دايرکتوری ريشه سرويس دهنده وب سنجيده خواهد شد مثلا در صورتيكه از طريق يك فايل ASP كه خود در فهرستی با نام /Scripts قرار دارد قصد استفاده از ComputeTax.ASP را داشته باشيم و از شكل نوع اول برای SSI استفاده كرده باشيم:

<!-- #include file="ComputeTax.asp" - ->

می بايست فايل ComputeTax.ASP نيز در دايرکتوری /Scripts قرار گرفته باشد در غير اينصورت با يك پيام خطا مواجه خواهيم شد. در صورتيكه از شكل دوم استفاده شود موضع و محل فايل ASP متقاضی مهم نبوده و مهم استقرار فايل ضميمه شده در فهرستی است كه موقعيت آن نسبت به فهرست ريشه سرويس دهنده وب بدست خواهد آمد.

يك فايل ضميمه شده می تواند شامل تگ های Html و يا كدهای ASP بوده و خود نيز می تواند از فايل های ضميمه شده ديگری نيز استفاده نمايد. در اين زمينه بايد به اين نكته اشاره شود كه فايل های ضميمه شده بگونه ای طراحی گردنند كه اسير يك سيكل ( دور باطل ) با نام Cyclic Include نشويم. وضعيت فوق زمانی اتفاق می افتد كه مثلافايل page1.ASP فايل page2.ASP را include كرده باشد و فايل page2.ASP فايل page1.ASP را include نمايد.

نوع فايل هائی كه می توانند مشمول SSI قرار گيرند
فايل های ASP تنها فايل هائی نيستند كه قادر به استفاده از SSI می باشند هر نوع فايلی كه به ASP.dll و يا ssinc.dll ، اصطلاجا map شده باشد قادر به استفاده از SSI خواهد بود. زمانيكه يك سرويس گيرنده درخواست فايلی را از سرويس دهنده وبی نظير IIS داشته باشد، سرويس دهنده وب در ابتدا نوع فايل درخواستی را با مراجعه به انشعاب فايل تشخيص داده و در ادامه بررسی خواهد كرد كه آيا اين انشعاب توسط يك ISAPI DLL اصطلاحا map خواهد شد يا خير. در صورت وجود انطباق بين انشعاب فايل درخواستی و يك ISAPI DLL، Dll مربوطه صدا زده خواهد شد. فرآيند اجرای يك فايل ASP كه دارای انشعاب ASP می باشد دارای سرنوشتی اينچنين بوده كه توسط ASP.dll اجرا خواهند شد. Ssinc.dll يك ISAPI DLL بوده كه امكان اجرای دايركتيوهای Server Side را فراهم ميكند، SSI صرفا يك نوع از دايركتيوهای موجود در اين زمينه می باشد. در سرويس دهنده IIS 5.0 تمامی فايل های با انشعاب shtml ,shtm ,stm بصورت پيش فرض بر روی ssinc.dll اصطلاحا map شده اند و طبيعتا قادر به استفاده از SSI خواهند بود. البته فايل هائی با چنين انشعاباتی قادر به پردازش فايل های ASP نبوده مگر اينكه با استفاده از تنظيمات مربوطه در IIS با صراحت اعلان نمائيم كه اين نوع فايل ها كه دارای چنين انشعاباتی می باشند توسط ASP.dll پردازش شوند. نحوه انجام اين تنظيمات بصورت زير است:

Start | Programs | Administrative tools | Internet Service Manager | Right click your web site | properties | selest "Home Directory" | Click "Configuration button" | Application configuration dialog box | App Mapping

SSI پويا
SSI قبل از هر يك از كدهای موجود در يك فايل ASP پردازش خواهند شد با توجه به اين حقيقت ما نمی توانيم نام يك فايل را بصورت پويا مشخص نمائيم. مثلا اگر می توانستيم كاری مطابق زير را انجام دهيم عالی بود!:

<%
Dim strpage
Strpage = "/scripts/Mypage.asp"
%>
<!--#include virtual="<%strpage%>" -->

در صورت اجرای فايل فوق توسط سرويس دهنده وب با يك پيام خطا مواجه شده با اين مفهوم كه فايل <%strpage%> پيدا نشد. برای اين مشكل هم راه حل هائی وجود دارد، يكی از اين روش ها استفاده از دستور Select Case است بگونه ای كه برای هر حالت SSI يك case داشته باشيم. دستورات زير نحوه حل مشكل فوق را نشان می دهد:

<%
Select Case strpage
Case "IncludeFile1.ASP" %>
<!-- #include virtual="/includeFile1.asp" -->
<% Case "IncludeFile2.asp" >
<!-- #include virtual="/includeFile2.asp" -->
<% Case "IncludeFile3.asp" >
<!-- #include virtual="/includeFile3.asp" -->
<% Case "IncludeFile4.asp" >
<!-- #include virtual="/includeFile4.asp" -->
<% Case "IncludeFile5.asp" >
<!-- #include virtual="/includeFile5.asp" -->
<% End Select >

روش فوق با اينكه مشكل استفاده از نام بصورت پويا برای SSI را برطرف كرده است ولی چالش های جديدی را ايجاد می كند : اولا تعداد حالاتی را که می توانيم داشته باشيم را محدود می کند. ثانيا به ازای هر فايلی كه می خواهيم آن را include نمائيم، می بايست از يك case استفاده نموده و ثالثا با توجه به اين امر كه تمام محتويات يك فايل include شده قبل از پردازش يك فايل ASP به آن ملحق خواهد شد، بديهی است كه حجم چنين فايلی بشدت افزايش پيدا كرده و می تواند مسائل خاص خود را داشته باشد.

يكی ديگر از روش های موجود جهت حل مشكل ياد شده، استفاده از FileSystemObject است. در اين روش شی فوق مسئوليت خواندن يك فايل ضميمه شده را برعهده گرفته و محتويات آن را در يك فايل ASP درج خواهد كرد. مجموعه دستورات زير امكان درج يك فايل را درون اسكريپت های ASP بوجود می آورد:

<% Option Explicit %>
<%
Dim StrFileName ,objFSO,objFile
strFileName = "C:\InetPub\wwwroot\Test.htm"
Set objFile = objFSO.OpenTextFile(strFileName)
Response.Write objFile.ReadAll
Set objFile = Nothing
Set objFSO = Nothing
%>

برنامه فوق صرفا امكان درج يك فايل متنی بصورت پويا را در يك فايل ديگر فراهم می كند و اگر در فايل الحاق شده دستورات و يا كدهای اجرائی وجود داشته باشد فقط آنها را نمايش داده و صفت اجرائی بودن از آنها سلب خواهد شد. در نسخه ASP 2.0 امكان استفاده از SSI پويا وجود نداشته و در نسخه 3.0 با استفاده از متد Server.Execute تحقق اين امر ميسر شده است.

نامگذاری فايل های ضميمه
پس از استقرار توابع مورد نظر در يك فايل خاص كه قصد استفاده از آنان را برای ساير صفحات ASP داريم، می بايست انشعاب فايل كنابخانه ای خود را asp قرار دهيم. در صورتيكه انشعاب يك فايل ضميمه را asp در نظر نگيريم، يك كاربر ماهر با حدس زدن نام فايل ضميمه شده، قادر به مشاهده محتويات فايل مورد نظر و دستيابی به كدهای مربوطه خواهد بود ! فايل های با انشعاب asp در مقابل چشمان نامحرم ايمن هستند. در صورتيكه بهر دليلی قصد استفاده از يك فايل ضميمه را با انشعابی غير از asp را داشته باشيم، می بايست آن را در دايرکتوری قرار داد كه مجوز خواندن HTTP آن غيرفعال شده باشد. با انجام اين كار فايل های ASP كماكان امكان استفاده از اين نوع فايل ها را دارا بوده ولی در صورتيكه كاربری قصد مشاهده محتويات اين نوع فايل ها را به روش سعی و خطا داشته باشد، با يك پيام خطا مبنی بر عدم مجاز بودن برای مشاهده فايل مواجه خواهند شد. اگرچه حدس زدن نام يك فايل برای يك كاربر بسيار مشكل بنظر می رسد ولی اين بمنزله ايمن بودن اين نوع فايل ها زمانيكه دارای انشعاب فايلی غير از asp نخواهد بود. فرض كنيد كه يكی از توابع موجود در يكی از فايل های ضميمه شده دارای يك خطای برنامه نويسی باشد، زمانيكه يك كاربر صفحه ای را مشاهده می كند كه در آن صفحه از تابع فوق كه خود در يك فايل ضميمه شده قرار گرفته، استفاده می شود، يك پيام خطا بر روی مرورگر كاربر با ذكر نوع خطا، مسير و نام فايلی كه خطا در آن اتفاق افتاده نمايش داده می شود. نام فايل می تواند، فايل ضميمه شده ئی باشد كه دارای انشعاب غير از asp باشد، در چنين مواردی كاربران با دادن مسير مربوطه قادر به مشاهده محتويات فايل مورد نظر خواهند بود.

حفاظت محتويات فايل های ضميمه
روش های متعددی جهت حفاظت محتويات فايل های ضميمه وجود دارد. در ادامه به دو روش رايج اشاره می شود:

۱ يك دايرکتوری برای تمامی فايل های ضميمه ايجاد كرده و مجوز خواندن Http را برای آن غير فعال نمائيد. تمامی فايل های ضميمه خود را در دايرکتوری فوق قرار دهيد. در صورتيكه كاربری قصد دستيابی به محتويات يكی از فايل های موجود در فولدر فوق را داشته باشد با پيام Permission Denied error مواجه خواهد شد.
۲ انشعاب تمامی فايل های ضميمه را asp در نظر بگيريد. با اين كار در صورتيكه كاربری قصد مشاهده محتويات چنين فايل هائی را داشته باشد، سرويس دهنده وب درخواست او را اخذ و جهت پردازش در اختيار ASP.dll قرار داده و وی نيز ماحصل كار خود را بصورت HTML برای متقاضی ارسال خواهد كرد!
 
بالا