برای مشخص نمودن تعداد دفعات مراجعه به یك صفحه وب روش های متفاوتی وجود دارد كه شاید خوانندگان گرامی با برخی از آنها نیز آشنائی داشته باشند. هدف این مقاله معرفی یكی دیگر از روش های موجود بكمك تكنولوژی 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) ایجاد شده و مقدار صفر در آن قرار گرفته است (حا لت اولیه).