PDA

نسخه کامل مشاهده نسخه کامل : آموزش ASP



Nesta
07-04-2005, 03:34
يك فايل ASP مى تواند حاوى متون، Tagهاى HTML و اسكريپت ها باشد. اسكريپت ها در يك فايل ASP بر روى سرور اجرا مى شوند.

به عنوان پيش نياز چه چيزى را بايد بدانيد؟

قبل از شروع، بايد با مسائل زير را تا حدودى آشنا باشيد:


WWW و HTML و مسائل اوليه ساخت صفحات Web
يك زبان اسكريپت نويسى همچون JavaScript يا VBScript
ASP چيست؟
ASP حروف اختصارى Active Server Pages است.
ASP برنامه اى است كه درون IIS اجرا مى شود.
IIS حروف اختصارى Internet Information Services است.
IIS به عنوان يك مولفه رايگان با ويندوز 2000 عرضه مى شود.
IIS همچنين به عنوان جزئى از Windows NT 4.0 Option Pack است.
Option Pack مى تواند از سايت مايكروسافت داون لود شود.
PWS نسخه كوچكتر - ولى كاملا عمل كننده - از IIS است.
PWS را مى توانيد در سى دى ويندوز 95 يا 98 خود پيدا كنيد.
سازگارى ASP


ASP تكنولوژى مايكروسافت است.
براى اجراى IIS بايد ويندوز NT نسخه 4.0 يا بالاتر را داشته باشيد.
براى اجراى PWS بايد ويندوز 95 يا بالاتر را داشته باشيد.
ChiliASP تكنولوژى است كه ASP را بدون نياز سيستم عامل ويندوز اجرا مى كند.
InstantASP تكنولوژى ديگرى است كه ASP را بدون نياز به سيستم عامل ويندوز اجرا مى كند.
يك فايل ASP چيست؟
يك فايل ASP تقريبا شبيه به يك فايل HTML است.
يك فايل ASP مى تواند حاوى متن، XML، HTML، و اسكريپت باشد.
اسكريپت هاى درون يك فايل ASP بر روى Server اجرا مى شود.
يك فايل ASP پسوند "asp." دارد.
فرق ASP با HTML چيست؟
وقتى كه Browser (كاوشگر اينترنت) درخواست يك فايل HTML را بكند، Server آن فايل را بر مى گرداند.
وقتى كه Browser درخواست يك فايل ASP را بكند، IIS درخواست مربوطه را به موتور (هسته‌اى كه وظيفه اصلى را بازى مى كند) ASP ارجاع مى دهد. موتور ASP فايل ASP را خط به خط مى خواند، و اسكريپت هاى درون فايل را اجرا مى كند. در نهايت فايل ASP به عنوان يك فايل HTML ساده به Browser برگردانده مى شود.
ASP چه كارى مى تواند براى شما انجام دهد؟
به طور ديناميكى محتويات يك Web page را ويرايش يا اضافه كند.
به درخواست هاى كاربر كه از فرم هاى HTML ارسال شده اند پاسخ دهد.
به هر گونه اطلاعات با بانك اطلاعاتى دسترسى پيدا كرده و نتايج را به Browser برگرداند.
سفارشى نمودن (Customize) يك Web page تا براى كاربران مختلف مفيدتر باشد.
مزاياى استفاده از ASP به جاى CGI و Perl سرعت و سادگى است.
فراهم كردن امنيت بيشتر به گونه اى كه كد ASP شما از طريق Browser قابل مشاهده نيست.
از آن جايى كه فايلهاى ASP به شكل HTML برگردانده مى شوند، ميتوانند بوسيله هر Browserى مشاهده گردند.
برنامه نويسى درست ASP مى تواند ترافيك شبكه را به حداقل برساند.

Nesta
07-04-2005, 03:35
شما مي توانيد ASP را بدون نياز به يک سرور خارجي اجرا کنيد. براي انجام اين کار شما بايد Microsoft's Personal Web Server (PWS) يا (Internet Information Server (IIS را در رايانه خود نصب کنيد.

چگونه ASP را در رايانه خود اجرا کنيد؟

شما مي توانيد ASP را بدون سرور خارجي در رايانه شخصي خود اجرا کنيد. براي انجام اين کار بايد Microsoft's (Personal Web Server (PWS يا (Internet Information Server (IIS را در رايانه خود نصب کنيد.
اگر در مورد اجراي ASP جدي هستيد، بايد حداقل ويندوز 98، نسخه دوم (Second Edition) داشته باشيد.
اگر در مورد اجراي ASP بسيار جدي هستيد، بايد از ويندوز 2000 استفاده کنيد.
چگونه PWS را در ويندوز 95 نصب کنيد و ASP اجرا کنيد؟

(Personal Web Server (PWS همراه ويندوز 95 نيست!!

براي اجراي ASP بر روي ويندوز 95، شما بايد "Windows NT 4.0 Option Pack" را از مايکروسافت داون لود کنيد.

داون لود "Windows NT 4.0 Option Pack"


چگونه PWS را در ويندوز NT نصب کنيد و ASP اجرا کنيد؟

(Personal Web Server (PWS همراه ويندوز NT نيست!!

براي اجراي ASP بر روي ويندوز 95، شما بايد "Windows NT 4.0 Option Pack" را از مايکروسافت داون لود کنيد.

داون لود "Windows NT 4.0 Option Pack"


چگونه PWS را در ويندوز 98 نصب کنيد و ASP اجرا کنيد؟


شاخه Add-ons را در سي دي ويندوز 98 خود باز کنيد، شاخه PWS را پيدا کرده و فايل setup.exe را اجرا کنيد.
يک شاخه Inetpub در هارد شما ايجاد خواهد شد. آن را باز کنيد و شاخه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] را پيدا کنيد.
يک شاخه جديد درست کنيد و نام آن را چيزي شبيه به "MyWeb" بگذاريد.
از يک ويرايشگر متن استفاده کنيد و کدهاي ASPي را بنويسيد، فايل را به نام "test1.asp" را در شاخه "MyWeb" ضبط کنيد.
مطمئن شويد که وب سرور شما اجرا است - برنامه نصب يک آيکن جديد در Task Bar شما اضافه کرده است (اين نشانه PWS است). بر روي آن کليک کنيد و دکمه Start را در پنجره اي که آمده بزنيد.
Browser خود را باز کنيد و تايپ کنيد "[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]"، تا اولين صفحه ASP خود را ببينيد.
چگونه PWS را در ويندوز Me نصب کنيد و ASP اجرا کنيد؟

(Personal Web Server (PWS در ويندوز Me وجود ندارد !!

مقاله مربوطه را در سايت مايکروسافت بخوانيد


چگونه IIS را در ويندوز 2000 نصب کنيد و ASP اجرا کنيد؟


از دکمه Start به Settings و سپس Control Panel برويد.
در پنجره Control Panel آيکن Add/Remove Programs را انتخاب کنيد.
در پنجره Add/Remove Programs گزينه Add/Removes Windows Components را انتخاب کنيد.
در پنجره جديد گزينه Internet Information Services را انتخاب کرده، OK را بزنيد.
يک شاخه Inetpub در هارد شما ايجاد خواهد شد. آن را باز کنيد و شاخه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] را پيدا کنيد.
يک شاخه جديد درست کنيد و نام آن را چيزي شبيه به "MyWeb" بگذاريد.
از يک ويرايشگر متن استفاده کنيد و کدهاي ASPي را بنويسيد، فايل را به نام "test1.asp" را در شاخه "MyWeb" ضبط کنيد.
مطمئن شويد که وب سرور شما اجرا است - برنامه نصب يک آيکن جديد در Task Bar شما اضافه کرده است (اين نشانه IIS است). بر روي آن کليک کنيد و دکمه Start را در پنجره اي که آمده بزنيد.
Browser خود را باز کنيد و تايپ کنيد "[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]"، تا اولين صفحه ASP خود را ببينيد.
چگونه IIS را در ويندوز XP نصب کنيد و ASP اجرا کنيد؟

نکته: شما نمي توانيد ASP را روي ويندوز XP نسخه خانگي (Home Edition) اجرا کنيد.
از دکمه Start به Settings و سپس Control Panel برويد.
در پنجره Control Panel آيکن Add/Remove Programs را انتخاب کنيد.
در پنجره Add/Remove Programs گزينه Add/Removes Windows Components را انتخاب کنيد.
در پنجره جديد گزينه Internet Information Services را انتخاب کرده، OK را بزنيد.
يک شاخه Inetpub در هارد شما ايجاد خواهد شد. آن را باز کنيد و شاخه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] را پيدا کنيد.
يک شاخه جديد درست کنيد و نام آن را چيزي شبيه به "MyWeb" بگذاريد.
از يک ويرايشگر متن استفاده کنيد و کدهاي ASPي را بنويسيد، فايل را به نام "test1.asp" را در شاخه "MyWeb" ضبط کنيد.
مطمئن شويد که وب سرور شما اجرا است - برنامه نصب يک آيکن جديد در Task Bar شما اضافه کرده است (اين نشانه IIS است). بر روي آن کليک کنيد و دکمه Start را در پنجره اي که آمده بزنيد.
Browser خود را باز کنيد و تايپ کنيد "[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]"، تا اولين صفحه ASP خود را ببينيد.

Nesta
07-04-2005, 03:37
شما نمي توانيد سورس کد هاي ASP را بوسيله انتخاب گزينه View Source در Browser مشاهده کنيد، شما فقط خروجي فايل ASP را مشاهده مى‌کنيد که HTML ساده است. زيرا که اسکريپت ها قبل از اين که نتايج به Browser فرستاده شود بر روي سرور اجرا مى‌گردد.

در خودآموزهاي ASP ما تمامي مثالها علاوه بر نتيجه نهايي حاوي سورس کد مربوطه هستند. اين مسئله امکان فهميدن اينکه مثالها چگونه کار مي کنند را براي شما ساده مي کند.
مثالها

نوشتن متن با ASP
چگونه با کمک گرفتن از ASP متوني را بنويسيم.
<html>
<body>

<%
response.write("Hello World!")
%>

</body>
</html>



ÎÑæÌì:

Hello World!
اضافه کردن HTML به متون
چگونه متون را با استفاده از Tagهاي HTML فرمت بندي کنيم؟
<html>
<body>
<%
response.write("<h2>You can use HTML tags to format the text!</h2>")
%>

<%
response.write("<p style='color:#0000ff'>This text is styled with the style attribute!</p>")
%>
</body>
</html>



ÎÑæÌì:
You can use HTML tags to format the text!

This text is styled with the style attribute!
قواعد اساسي نحو
يک فايل ASP به طور عادي دقيقا همانند HTML حاوي Tagهاي HTML است. اگر چه، يک فايل ASP مي تواند همچنين حاوي Scriptها نيز باشد. اين اسکريپت ها به وسيله علامت هاي %> و <% احاطه شده اند. اسکريپت هاي سرور بر روي سرور اجرا مي شود و مي تواند حاوي هر گونه expressions، دستورات (Statements)، توابع، يا عملگرهايي باشد.


آبجکت Response
متد Write مربوط به آبجکت Response براي فرستادن محتويات به Browser استفاده مي شود. به عنوان مثال، دستورات زير براي فرستادن متن "سلام دنيا!" به Browser استفاده مى‌شود.
<%
response.write("سلام دنيا!")
%>

VBScript
اين امکان وجود دارد که از که از زبان هاي مختلف اسکريپت نويسي در فايلهاي ASP استفاده کنيد. اگرچه زبان پيش فرض، VBScript است.
<html>
<body>
<%
response.write("سلام دنيا!") %>
</body>
</html>

مثال بالا "سلام دنيا!" را در قسمت body متن مي نويسد.

JavaScript
براي اين که JavaScript را به عنوان زبان پيش فرض براي يک صفحه خاص مشخص کنيد مي بايست از راهنماهاي زباني در ابتداي صفحه خود استفاده کنيد:
<%@ language="javascript"%>
<html>
<body>
<%
Response.Write("Hello World!")
%>
</body>
</html>

نکته: JavaScript برعکس VBScript به بزرگ يا کوچک بودن حروف حساس است. شما مجبور خواهيد بود که وقتي زبان احتياج دارد، کد ASP خود را با حروف بزرگ يا کوچک بنويسيد.

ساير زبان هاي اسکريپ نويسي
ASP همراه با VBScript و JScript (پياده سازي مايکروسافت از JavaScript) عرضه مي شود. اگر شما مي خواهيد که با زبان ديگري همچون PERL - REXX يا Phyton کد بنويسيد، مجبور خواهيد بود که موتور Script مربوط به آنها را نصب کنيد.
مهم: به خاطر اين که اسکريپت ها بر روي سرور اجرا مي شوند، به هيچ وجه لازم نيست Browserي که فايل ASP را نشان مي دهد از Scripting پشتيباني کند!

Nesta
07-04-2005, 03:40
يک متغيير براي نگهداري اطلاعات استفاده مي شود.

اگر يک متغيير بيرون از يک رويه (procedure) تعريف شود، ميتواند بوسيله هر اسکريپت موجود در فايل ASP تغيير يابد. اگر متغيير داخل يک رويه تعريف شود، آن هر بار که رويه اجرا مي شود، ايجاد و سپس نابود مي شود.
مثالها

تعريف کردن يک متغيير
متغييرها براي نگهداري اطلاعات استفاده مي شود. اين مثال نشان مي دهد که چگونه يک متغيير تعريف کنيم، چگونه يک مقدار به آن بدهيم، و چگونه از آن مقدار در يک نوشته استفاده کنيم.
<html>
<body>

<%
dim name
name="Donald Duck"
response.write("My name is: " & name)
%>

</body>
</html>




ÎÑæÌì:

My name is: Donald Duck
تعريف يک آرايه
آرايه‌ها براي ضبط يک سري از اطلاعات مرتبط به هم استفاده مي شوند. اين مثال نشان مي دهد که چگونه آرايه‌اي تعريف کنيم که حاوي نام هايي باشد.
<html>
<body>

<%
Dim famname(5),i
famname(0) = "Jan Egil"
famname(1) = "Tove"
famname(2) = "Hege"
famname(3) = "Stale"
famname(4) = "Kai Jim"
famname(5) = "Borge"

For i = 0 to 5
response.write(famname(i) & "<br />")
Next
%>

</body>
</html>


ÎÑæÌì:

Jan Egil
Tove
Hege
Stale
Kai Jim
Borge
چرخشي بر روي Headerهاي HTML
اين مثال نشان مي دهد که چگونه روي شش Header يا تيتر موجود در HTML گردش کنيم؟
<html>
<body>

<%
dim i
for i=1 to 6
response.write("<h" & i & ">Header " & i & "</h" & i & ">")
next
%>

</body>
</html>


ÎÑæÌì:

Header 1
Header 2
Header 3
Header 4
Header 5
Header 6
نشان دادن پيغام خوش‌آمدگويي بر حسب زمان با استفاده از VBScript
اين مثال بر حسب زمان سرور يک پيغام مختلف به کاربر نشان خواهد داد.
<html>
<body>
<%
dim h
h=hour(now())

response.write("<p>" & now())
response.write(" (Norwegian Time) </p>")
If h<12 then
response.write("Good Morning!")
else
response.write("Good day!")
end if
%>
</body>
</html>


ÎÑæÌì:


04.02.2003 12:13:16 (Norwegian Time)
Good day!
نشان دادن پيغام خوش‌آمدگويي بر حسب زمان با استفاده از JavaScript
<%@ language="javascript" %>
<html>
<body>
<%
var d=new Date()
var h=d.getHours()

Response.Write("<p>")
Response.Write(d + " (Norwegian Time)")
Response.Write("</p>")
if (h<12)
{
Response.Write("Good Morning!")
}
else
{
Response.Write("Good day!")
}
%>
</body>
</html>


ÎÑæÌì:


Tue Feb 4 12:13:20 UTC+0100 2003 (Norwegian Time)
Good day!
عمر متغييرها
متغييري که خارج از يک رويه (procedure) تعريف شده است مي تواند بوسيله هر اسکريپتي در فايل ASP در دسترس قرار گرفته و تغيير کند.

متغييري که در داخل يک تابع تعريف شده است هر بار که رويه اجرا مي شود درست و نابود مي شود. هيچ اسکريپتي بيرون از رويه نمي تواند به آن متغيير دسترسي داشته باشد يا آن را تغيير دهد.

براي تعريف متغييرهايي که براي بيش از يک فايل ASP قابل دسترس باشند، آنها را به عنوان متغييرهاي Session يا متغييرهاي Application تعريف کنيد.

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

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

Nesta
07-04-2005, 03:41
يك Cookie اغلب براى شناسائى كاربر استفاده مى‌شود.

مثالها
Cookie خوش‌آمدگويى
چگونه يك Cookie خوش‌آمدگويى درست كنيم.

يك Cookie چيست؟
يك Cookie اغلب براى شناسندن كاربر استفاده مى‌شود. يك Cookie يك فايل كوچك است كه سرور آن را در كامپيوتر كاربر جاسازى مى‌كند. هر بار كه همان كامپيوتر يك صفحه را درخواست مى‌كند، Cookie نيز فرستاده مى‌شود. با ASP شما مى‌توانيد هم مقادير Cookie را بسازيد و هم آنها را استخراج نماييد.
چگونه يك Cookie بسازيد؟
Response.Cookie براى ساختن Cookie استفاده مى‌شود.

توجه: Response.Cookie بايد قبل از تگ درج شود.

در مثال زير، ما يك Cookie درست خواهيد كردم و اسم آن را "firstname" مى‌گذاريم و مقدار "Alex" را به آن مى‌دهيم:
<% Response.Cookies("firstname")="Alex" %>
همچنين امكان دارد كه خصوصياتى را مثل تاريخ انقضاى cookie را به آن بدهيد:
<% Response.Cookies("firstname")="Alex" Response.Cookies("firstname").Expires=#May 10,2002%>

چگونه مقدار cookieها را استخراج كنيم
دستور "Request.Cookies" براى استخراج اطلاعات از cookieها استفاده مى‌شود.

در مثال زير، ما مقدار cookieى با نام "firstname" را استخراج كرده و در صفحه نشان داديم:

<% fname=Request.Cookies("firstname") response.write("Firstname=" & fname) %>
خروجى:


Firstname=Alex


يك Cookie با كليد
اگر يك cookie حاوى مجموعه‌اى از مقادير باشد، مى‌گوييم آن cookie دارى كليدهايى است.

در مثال زير، ما يك مجموعه cookie با نام "user" درست مى‌كنيم. cookie به نام "user" داراى كليدهايى است كه حاوى اطلاعاتى راجع به كاربر است.



<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%>


خواندن همه Cookieها
به كد زير نگاه كنيد:


<%
Response.Cookies("firstname")="Alex"
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%>

فرض كنيم كه سرور شما همه cookieهاى بالا را به كاربر فرستاده است.

حالا ما مى‌خواهيم تمام cookieها را كه به كاربر فرستاده شده است را بخوانيم. مثال زير نشان مى‌دهد كه چگونه اين كار را انجام دهيم (توجه داشته باشيد كه در مثال پايين با استفاده از HasKeys چك مى‌كند كه آيا cookie كليد دارد يا نه؟


<html>
<body>
<%
dim x,y
for each x in Request.Cookies
response.write("<p>")
if Request.Cookies(x).HasKeys then
for each y in Request.Cookies(x)
response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
response.write("<br />")
next
else
Response.Write(x & "=" & Request.Cookies(x) & "<br />")
end if
response.write "</p>"
next
%>
</body>
</html>

خروجى:
firstname=Alex user:firstname=John user:lastname=Smith user: country=Norway user: age=25

اگر Browser داراى پشتيبانى Cookie نباشد چه اتفاقي مى‌افتد؟

اگر برنامه شما با Browserى سر و كار داشته باشد كه cookie را پشتيبانى نمى‌كند، بايد از روش‌هاى ديگرى براى انتقال اطلاعات از يك صفحه به صفحات ديگر در برنامه خود استفاده كنيد. دو راه براى انجام اين كار هست:

1. اضافه كردن پارامترها به URL

شما مى‌توانيد پارامترها را به URL اضافه كنيد:



<a href="welcome.asp?fname=John&lname=Smith">
Go to Welcome Page</a>


و مقادير موجود در "welcome.asp" را همچون مثال زير استخراج كنيد:
<% fname=Request.querystring("fname") lname=Request.querystring("lname") response.write("

Hello " & fname & " " & lname & "!
") response.write("

Welcome to my Web site!
") %>
2. استفاده از form
شما مى‌توانيد از فرم‌ها استفاده كنيد. وقتى كه كاربر روى دكمه Submit كليك كند فرم ورودى‌هاى كاربر را به "welcome.asp" رد مى‌كند:


<form method="post" action="welcome.asp">
First Name: <input type="text" name="fname" value="">
Last Name: <input type="text" name="lname" value="">
<input type="submit" value="Submit">
</form>


مقادير موجود در "welcome.asp" را همچون اين مثال استخراج كنيد:



<%
fname=Request.form("fname")
lname=Request.form("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>

Nesta
07-04-2005, 03:43
دستورات Request.QueryString و Request.Form مى‌توانند براى گرفتن اطلاعات از فرم‌ها، مثل ورودى‌هاى كاربر استفاده گردند.
مثالها
يك فرم با متد "get"
چگونه با استفاده از دستور Request.QueryString به كاربر عكس‌العمل نشان دهيد.
<html>
<body>
<form action="demo_reqquery.asp" method="get">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.QueryString("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!<br />")
Response.Write("How are you today?")
End If
%>
</body>
</html>

خروجى:

Your name:
يك فرم با متد "post"
چگونه با استفاده از دستور Request.Form به كاربر عكس‌العمل نشان دهيد.
<html>
<body>
<form action="demo_simpleform.asp" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!<br />")
Response.Write("How are you today?")
End If
%>
</body>
</html>

خروجى:

Your name:
يك فرم با Radio Buttonها
چگونه با استفاده از دستور Request.Form و از طريق Radio Buttonها به كاربر عكس‌العمل نشان دهيد.
<html>
<body>
<form action="demo_reqquery.asp" method="get">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.QueryString("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!<br />")
Response.Write("How are you today?")
End If
%>
</body>
</html>

خروجى:

Your name:
ورودى كاربر
آبجكت Request مى‌تواند براى گرفتن اطلاعات از كاربر از فرم‌ها استفاده گردد.



<form method="get" action="simpleform.asp">
First Name: <input type="text" name="fname">
<br />
Last Name: <input type="text" name="lname">
<br /><br />
<input type="submit" value="Submit">
</form>


ورودى‌هاى كاربر مى‌توانند از دو طريق استفاده گردد: با Request.QueryString يا Request.Form




Request.QueryString
دستور Request.QueryString براى جمع كردن مقادير موجود در يك فرم با متد "get" استفاده مي شود. اطلاعات فرستاده شده از فرمى با متد "get" براي هر كسى قابل مشاده است (اين اطلاعات در قسمت آدرس Browser نشان داده مي شود) و در مورد مقدار اطلاعات محدوديت دارد.

اگر كاربر در فرمى با متد "get" مقدار "Bill" و "Gates" را وارد كنيد، URLى كه به سرور فرستاده مى‌شود شبيه به اين خواهد بود:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

فرض كنيد فايل "simpleform.asp" حاوى اسكريپت زير است:



<body>
Welcome
<%
response.write(request.querystring("fname"))
response.write(" " & request.querystring("lname"))
%>
</body>

Browser خط زير در قسمت Body سند نشان خواهد داد:


Welcome Bill Gates

Request.Form


دستور Request.Form براي جمع كردن اطلاعات از يك فرم با متد "post" استفاده مى‌شود. اطلاعات فرستاده شده از فرمى با متد POST براي بقيه غيرقابل مشاهده است و هيچ محدوديتى در مقدار اطلاعات فرستاده شده ندارد.

اگر كاربر در فرمى با متد "post" كلمه "Bill" و "Gates" را تايپ كند، URLى كه به سرور فرستاده مى‌شود شبيه به اين خواهد بود:


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

فرض كنيد كه فايل "simpleform.asp" حاوى اسكريپت زير باشد:



<body>
Welcome
<%
response.write(request.form("fname"))
response.write(" " & request.form("lname"))
%>
</body>



Browser خط زير در قسمت Body سند نشان خواهد داد:


Welcome Bill Gates


تصديق فرم يا تست معتبر بودن (درست بودن) مقادير ورودى
ورودى كاربر بايد در Browser در هر جايى كه امكان داشت (با استفاده از اسكريپتهاى client) تصديق گردد. تصديق Browserى سريعتر است و زمان load شدن سرور را نيز كاهش مى‌دهد

در صورتى كه مقادير ورودى كاربر وارد Database مى‌شود لازم است كه معتبرسازى يا تصديق ورودى‌هاى كاربر بر روى سرور انجام شود. يك راه خوب براى تصديق ورودى‌هاى كاربر، به جاى فرستادن اطلاعات به يك صفحه ديگر، پست كردن آنها به خود فايل است. در آن صورت كاربر مى‌تواند خطاها را در خود صفحه‌اى كه فرم در آن قرار دارد مشاهده نمايد. اين پيدا كردن خطا را براى وى ساده‌تر مى‌كند.

Nesta
07-04-2005, 03:45
در ASP شما مى‌توانيد يك تابع JavaScript را از يك VBScript و برعكس صدا كنيد (اجرا كنيد)
مثالها
اجرا كردن يك رويه با استفاده از VBScript
چگونه يك رويه VBScript را از ASP صدا كنيم.
<html>

<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>

<body>
<p>
You can call a procedure like this:
</p>
<p>
Result: <%call vbproc(3,4)%>
</p>
<p>
Or, like this:
</p>
<p>
Result: <%vbproc 3,4%>
</p>
</body>

</html>

خروجى:


You can call a procedure like this:

Result: 12

Or, like this:

Result: 12
اجرا كردن يك رويه با استفاده از JavaScript
چگونه يك رويه JavaScript را ASP صدا كنيم.
<%@ language="javascript" %>
<html>
<head>
<%
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
%>
</head>

<body>
<p>
Result: <%jsproc(3,4)%>
</p>
</body>

</html>

خروجى:


Result: 12
اجرا كردن رويه‌ها با استفاده از VBScript
چگونه هر دوى رويه‌هاى JavaScript و VBScript را از داخل ASP اجرا كنيم.
<html>
<head>
<%
sub vbproc(num1,num2)
Response.Write(num1*num2)
end sub
%>
<script language="javascript" runat="server">
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
</script>
</head>

<body>
<p>Result: <%call vbproc(3,4)%></p>
<p>Result: <%call jsproc(3,4)%></p>
</body>

</html>

خروجى:


Result: 12

Result: 12
رويه‌ها
سورس يك ASP مي تواند حاوي رويه‌ها و توابع باشد.


<html>
<head>
<%
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
</head>
<body>
<p>Result: <%call vbproc(3,4)%></p>
</body>
</html>


خط <%@ language="language" %> را بالاى خط قرار دهيد تا رويه‌ها و توابع را با استفاده از يك زبان ديگر scriptنويسى بنويسيد:



<%@ language="javascript" %>
<html>
<head>
<%
function jsproc(num1,num2)
{
Response.Write(num1*num2)
}
%>
</head>
<body>
<p>Result: <%jsproc(3,4)%></p>
</body>
</html>


تفاوت‌هاى بين VBScript و JavaScript
وقتى كه قصد داريد يك رويه نوشته شده در VBScript يا JavaScript را در يك فايل ASP كه با استفاده از VBScript نوشته شده، اجرا كنيد مى‌توانيد از كلمه كليدى "call" كه بعد از آن اسم رويه آماده است استفاده كنيد. اگر يك رويه احتياج به پارامترهايى داشته باشد ليست پارامترهاى بايد در بين دو پرانتز قرار بگيرد. اگر "call" را حذف كنيد، ليست پارامترها نبايد در بين دو پرانتز قرار بگيرد. اگر رويه هيچ پارامترى ندارد، استفاده از پرانتز به شما بستگى دارد و انتخابى است.

اگر قصد داريد يك رويه JavaScript يا VBScript را از يك فايل ASP كه با استفاده از JavaScript نوشته شده اجرا كنيد، هميشه بايد پس از نام رويه از پرانتز استفاده كنيد.

Nesta
07-04-2005, 03:46
يك برنامه كاربردي تحت وب بايك وب سايت تفاوت دارد . يك وب سايت شامل اطلاعات ثابتي است كه از پيش آماده شده و به صورت فايل هاي HTML ذخيره شده اند .در اين حالت جهت حركت اطلاعات از سرويس دهنده به
سرويس گيرنده مي باشد . در واقع وب سايت اطلاعات را به كاربر ارائه مي دهد .
بين درخواست ها ، سرويس دهنده از عملكرد سرويس گيرنده اطلاعي ندارد . سرويس گيرنده مي تواند از يك محل به محل ديگر بپرد و اين كار روي وب سايت اوليه هيچ تاثيري ندارد ، چون هر يك از صفحات به صورت يك واحد كاملا جدا مي باشند . در واقع وب سايت شامل گروهي از فايل هاي HTML از هم جدا مي باشد .
در مقابل ، يك برنامه كاربردي تحت وب ، اطلاعات را براي يك كاربر يا گروهي از كاربران به شكلي خاص فرمت كرده و ارائه مي دهد . در اين حالت ، جهت حركت اطلاعات دو طرفه مي باشد ؛ محتوياتي كه توسط مرور گر
نمايش داده مي شوند ، بر حسب اطلاعات ورودي كاربر يا هويت وي تعيين مي گردند .
بنابر اين يك برناها كاربردي تحت وب ، اطلاعات را به صورت ديناميكي ارائه مي دهد نه به صورت فايل هاي HTML ثابت . در واقع وظيفه برنامه ، فراهم كردن اطلاعات بر حسب شرايط است كه اين اطلاعات معمولا از پايگاه داده ( Database ) بدست مي آيد . برنامه كاربردي نه تنها اطلاعات مي دهد ، بلكه مي تواند از كاربر اطلاعات بگيرد و بكارهاي مختلف پاسخ مناسب دهد . به عبارت ديگر ، يك برنامه كاربردي ، عملكرد كاربر را از يك در خواست به
درخواست ديگر رديابي مي كند . بنابراين كاربر مي تواند آن گونه كه در يك وب سايت به جستجو و گردش مي پردازد ، به شكل دلخواه تمام صفحات يك برنامه كاربردي را برسي و مشاهده كند . بلكه اين برنامه كاربردي است كه صفحات مناسب را در شرايط مقتضي به طور ديناميكي توليد كرده و به كاربر ارائه مي دهد .
براي نوشتن برنامه هاي كاربردي تحت وب از زبان هاي مختلفي مي توان استفاده كرد ، مثل : Perl , Python , Java , C , C ++ , Visual Basic حتي Quick Basic يا Script هاي Unix .
در هر صورت مواردي كه در زير به آنها اشاره مي شود جزء ضروريات يك برنامه كاربردي هستند :
- ارتباط با يك پايگاه داده
- سرعت
- كار با رشته ها
- امنيت ( Security )
- تراكنش ها ( Tranaactions )
تراكنش چيست ؟
يك برنامه كاربردي تحت وب اغلب بايد كارهاي مختلفي انجام دهد كه هر يك از آنها براي تداوم اعتبار اطلاعات بايد به طور كامل انجام شوند . هنگام كار با يك پايگاه داده ، معمولا اين كار ها را بصورت يك تراكنش در نظر مي گيريم . يك تراكنش قرار دادي است كه موفقيت يا عدم موفقيت مجموعه اي از عمليات را تضمين مي كند كه در صورت عدم موفقيت ، اطلاعات بايد دست نخورده باقي بمانند . به عنوان يك نمونه كلاسيك ، مي توانيم يك حساب چك ( Checking Account ) را در نظر بگيريم .
هنگامي كه يك چك را به حساب خود مي گذاريد ، بانك مبلغ مشخص شده را از حساب مربوطه برداشته و به حساب شما واريز مي كند . كل اين عمليات در صورتي موفقيت آميز خواهد بود كه برداشت و واريز پول به طور كامل انجام شود . در اين حالت عمل دو گانه برداشت از يك حساب و واريز به يك حساب ديگر را يك تراكنش مي گوييم .

تفاوت ميان برنامه هاي IIS و DHTML
برنامه هاي IIS ، برنامه هايي هستند كه برروي سرويس دهنده و تحت Microsoft Internet Information Server اجرا مي شوند . در مقابل ، برنامه هاي DHTML برنامه Microsoft Internet Explorer استفاده مي كنند و به اين ترتيب به ورودي هاي كاربر پاسخ سريع مي دهند .
اين برنامه ها براي نوشتن بازي ها و شبيه سازي محيط و گرفتن اطلاعات از كاربر مناسب هستند . متاسفانه اين نوع برنامه ها به نسخه چهارم IE يا نسخه هاي بالاتر آن نياز دارند . با توجه به اين كه در اين كتاب به تفصيل در مورد ASP و
مسائل حاشيه اي آن بحث خواهيم كرد ، بد نيست كمي بيشتر در مورد برنامه هاي IIS توضيح دهيم . چون هدف از يادگيري ASP ، نوشتن برنامه هاي IIS مي باشد كه بر روي سرويس دهنده اجرا مي شوند .
برنامه هاي IIS با چندين مرورگر مختلف و نسخه هاي متفاوت آنها سازگاري دارند . همچنين در محيط هاي مختلف Mak يا Unix نيز اجراء مي شوند . بنابر اين اين نوع برنامه ها براي نوشتن برنامه هاي تجاري كه مخاطبين زيادي دارند مناسب هستند ؛ چون دليلي ندارد همه كاربران از ويندوز استفاده كرده و يا نسخه IE را در اختيار داشته باشند.
با توجه به اين كه برنامه هاي IIS برروي سرويس دهنده اجرا مي شوند ، براي به روز در آوردن آنها تنها كافي است كد موجود برروي سرويس دهنده را تغيير داد. اين نوع برنامه ها از هر محلي قابل دسترسي مي باشند . هنگامي كه يك برنامه IIS برروي سرويس دهنده نصب شده و به اجرا در آمد ، هر كامپيوتري كه بتواند به آن سرويس دهنده متصل شود مي تواند از آن برنامه استفاده كند .
شما مي توانيد براي شناسايي كاربران ، به آنها نام و كلمه عبور اختصاص دهيد و هنگام برقراري ارتباط با برنامه كاربردي ، نام و كلمه عبور را در خواست كنيد . با توجه به اين كه تمام اطلاعات بر روي يك كامپيوتر ذخيره مي شوند ،
هنگامي كه كاربر برنامه كاربردي را ترك كند ، هيچ نوع اطلاعاتي را از دست نمي دهد .
در قسمت بعد ، در مورد چگونگي كاركرد برنامه هاي IIS بحث خواهيم كرد .
چگونگي در خواست فايل ها توسط مرورگر :
هنگامي كه شما يك آدرس URL در فيلد آدرس مرورگر خود تايپ مي كنيد ، چند چيز اتفاق مي افتد . مرورگر ، آدرس وارد شده را تحليل كرده و پيغامي به سرويس دهنده نام ( Name Server ) مي فرستد تا نام مشخص شده
(به عنوان مثال ، Microsoft . com ) را به يك آدرس IP ( Internet Protocol ) – (به عنوان مثال ، 207.84.25.32 ) ترجمه كند . سپس مرورگر با استفاده از آن آدرس IP به سرويس دهنده مربوطه متصل شده و فايل را درخواست مي كند . سرويس دهنده فايل را مي خواند و محتويات آن را به مرورگر بر مي گرداند . در اين مرحله مرورگر ، دستورات HTML آن فايل را تحليل و فرمت فايل راتعيين مي كند . بيشتر فايل هاي HTML درون خود به تصاوير گرافيكي اشاره مي كنند. اين اشاره ها به صورت رفرنس (Reference ) بوده كه هريك از آنها نيز بايك آدرس
URL مشخص مي شوند .
بنابراين كل اين عمليات براي تك تك تصاوير و يا فايل هاي ديگري كه با رفرنس به آنها اشاره شده است تكرار مي شود.
به اين ترتيب پروسه نمايش يك فايل HTML شامل تعدادي تراكنش كوچك بين سرويس گيرنده ( يعني مرورگر ) و سرويس دهنده وب مي باشد .
برنامه هاي IIS نيز تقريبا به همين صورت عمل مي كنند. ابتدا يك مرورگر يك صفحه را از سرويس دهنده درخواست مي كند . اين درخواست هميشه براي يك فايل خاص مي باشد . پاسخ سرويس دهنده به نوع فايل درخواستي بستگي دارد. اگر فايل مورد نظر از نوع HTML (با پسوند .htm يا .html ) باشد ، سرويس دهنده به سادگي محتويات فايل را مي خواند و محتويات آنرا به صورت يك رشته در آورده و براساس قوانين URL كد گذاري مي كند و سپس رشته حاصله را به مرورگر برمي گرداند . كل اين پروسه ، از درخواست تا پاسخ ، يك تراكنش مابين سرويس گيرنده و سرويس دهنده تلقي مي شود . سرويس گيرنده همواره تراكنش را شروع مي كند و سپس تا زمان رسيدن پاسخ از سوي سرويس دهنده منتظر مي ماند كه در اين زمان تراكنش كامل شده و خاتمه مي يابد .
درخواست فايل از سرويس دهنده وب مشابه هنگامي است كه در Windows Explorer روي يك فايل شبكه اي ( فايلي كه برروي كامپيوتر سرويس دهنده قرار دارد ) دوبار – كليك مي كنيد ؛ البته با دو تفاوت :
-
- سرويس دهنده وب هيچگاه اجازه نمي دهد كه برنامه محلي شما (يعني مرورگر ) فايل درخواستي را باز كرده يا درآن چيزي بنويسيد ؛ در عوض خودش فايل را باز مي كند و محتويات آن را برميگرداند .
- ارتباط مابين سرويس گيرنده و سرويس دهنده گذرا ( Transient ) است . براي برقراري ارتباط با سرويس دهنده وب نيازي به مشخص كردن نام درايوي كه فايل بر روي آن قرار دارد نيست . پس از اين كه سرويس دهنده وب به درخواست شما پاسخ داد، ارتباط را قطع مي كند.
هنگامي كه تراكنش كامل شد ، سرويس دهنده وب ، سرويس گيرنده را به طور كلي از ياد مي برد . اگر بلا فاصله كليد
Refresh ( موجود برروي نوار ابزار IE ) را كليك كنيد . سرويس دهنده وب ، آن تراكنش را تكرار مي كند و اصلا به خاطر نمي آورد كه 5 ثانيه قبل اين فايل توسط شما درخواست شده است .
اگر ارتباط براساس پروتكل استاندارد HTTP برقرارشود ، بيشتر فايل ها به چندين تراكنش نياز دارند ، يكي براي فايل Html اصلي و بقيه براي يكايك فايل هاي گرافيكي كه در فايل اصلي به آنها اشاره شده است . بنابراين براي نمايش يك فايل كه شامل 5 تصوير گرافيكي است ، مرورگر درخواست جداگانه به سرويس دهنده وب مي فرستد .

Nesta
07-04-2005, 03:47
دقت کنيد که در اين شکل , درخواست اول براي يک فايل HTML انجام شده و 5 درخواست بعدي براي يک نوع فايل ديگر که اغلب به آن نوع MIME گفته مي شود و شامل اطلاعات باينري است صورت مي گيرند.
چگونگي پاسخ گويي IIS به درخواست هاي فايل ها به پسوند آنها بستگي دارد . ( فايل هايي که براي سرويس دهنده قابل شناسايي باشند در Registery ثبت مي شوند . ) اين مشابه همان روشي است که Windows Explorer
براي باز کردن برنامه مناسب , هنگامي که بر روي يک فايل دوبار کليک مي کنيد بکار مي برد. در مورد مرورگرها ،سرآيند ( Header ) نوع MIME كه توسط سرويس دهنده برگردانده مي شود ، نحوه برخورد مرورگربا انواع مختلف فايل ها را تعيين مي كند .
MIME مخفف Multipurpose Internet Mail Extension مي باشد . سرويس دهنده نوع MIME را به همراه هر درخواست بر مي گرداند و مرورگر با استفاده از آن چگونگي نمايش آن فايل راتعيين مي كند . در بيشتر موارد كه نوع فايل ها .html ، .gif يا .jpg مي باشد ، مرورگر مي تواند مستقيما آنها را نمايش دهد. براي انواع ديگر فايل ها ، مثل .doc يا .avi ، مرورگر نوع MIME را دريك ليست پيدا مي كند و سپس برنامه مناسب را براي نمايش آن فايل آغاز مي كند .
• توجه : در صورتي كه مي خواهيد اطلاعات بيشتري در مورد MIME بدست آوريد ، مي توانيد ليست كاملي از تمام انواع فايل هاي ثبت شده را از طريق آدرس :
• [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] /in-notes / iana / assignments / media- types / media- types
بدست آوريد .
نكته ديگري كه مي توان به آن اشاره كرد ، نحوه پاسخ گويي IIS به درخواست ها مي باشد .IIS تمام درخواست ها را بر اساس يك جزء زمان پردازش مي كند . هنگامي كه يك درخواست را قبول مي كند ، سرويس دهي به آن را آغاز مي كند و سپس درخواست بعدي را مي پذيرد . زمان را به بخش هاي كوچك تقسيم كرده و در هرجزء زمان به پردازش درخواست هاي متعدد مي پردازد تا زماني كه پاسخ هر يك از آنها را كامل كند . سرويس دهنده مي تواند پاسخ هر دستگاه را بلافاصله پس از شروع پردازش ارسال كند و يا مي تواند تا زمان پردازش يك درخواست ، پاسخ آن را نگه دارد و سپس همه آن را يكباره بفرستد .
مرورگرها مي توانند فايل هاي اجرائي نيز درخواست كنند . نوع كلي فايل اجرائي ، فايل ها يا برنامه هاي CGI
مي باشند . براي نوشتن برنامه هاي CGI مي توان از زبان هايي مثل C++ / C ، Perl ، VB و ... استفاده كرد .
درخواست يك فايل .asp توسط مرورگر:
هنگامي كه فايل درخواستي يك فايل .asp باشد ، نحوه پاسخ گويي به آن توسط سرويس دهنده اندكي تفاوت دارد. سرويس دهنده فايل مورد نظر را از ديسك گرفته و محتويات آن را به موتور مي فرستد .
موتور ASP فايل راتحليل كرده و قسمت هايي را كه شامل اسكريپت باشند مشخص مي كند . كد هاي موجود در فايل هاي ASP درون >% ، % < قرار مي گيرند ؛ مثل
< % this is a code % >
در اين نقطه ، بسته به اين كه كدهاي موجود به چه زباني نوشته شده باشند ( كه اغلب Javascript يا VBScriptمورد
استفاده قرار مي گيرد ) ، موتور مفسر آن زبان فراخواني شده و دستورات را پردازش مي كند . نتيجه كار به صورت يك فايل HTML به مرورگر ارسال مي شود .
اشياء دروني ASP :
در اين قسمت اشياء درون كتابخانه ASP را به طور مختصر معرفي مي كنيم و بيان جزئيات بيشتر را به فصول بعد موكول مي كنيم . ASP داراي 6 شيء مختلف است :
• server
• Application
• Session
• Request
• Response
• Scripting Context

حال هر يك از آنها را به طور خلاصه توضيح مي دهيم .

شيء Server
براي يك سرويس دهنده وب تنها يك شيء Server وجود دارد . تمام برنامه هاي كاربرديي كه برروي يك سرويس دهنده وب اجرا مي شوند ، به طور مشترك از يك شيء Server استفاده مي كنند . براي ساختن نمونه اي از يك شيء خاص در يك صفحه ASP ، مي توانيد از شيء Server استفاده كنيد . اين كار مشابه دستور
Set my Object = new Some Object
در Visual Basic مي باشد . شيء Server ويژگي ها و متدهايي نيز دارد كه آدرس هاي مجازي وب ( Virtual Web Paths ) را به آدرس هاي فيزيكي تبديل مي كنند . به عبارت ديگر ، اگر برنامه كاربردي شما در دايركتوري مجازي my Web قرار داشته باشد ، مي توانيد آدرس فيزيكي محل ذخيره فايل هاي درون دايركتوري my Web را بدست آوريد . به علاوه شيء Server مي تواند اطلاعات رشتهاي را بر اساس پروتكل HTTP كد گذاري كند .

شيء Application
براي هر برنامه كاربردي يك شيء Application وجود . از ديد موتور ASP ، يك برنامه كاربردي مجموعه اي از فايل ها و زير دايركتوري ها ي درون يك دايركتوري است كه شامل فايل Global.asa باشد . پسوند .asa بيانگر Active Server Application مي باشد . شيء Application به گونه اي است كه مي توانداشياء و متغيير هاي ديگر را در برگيرد . در حقيقت اگرچه اين شيء يك ديكشنري (Dictionary ) نيست ، ولي ساده تراست كه آن را به صورت يك ديكشنري در نظر بگيريم . ديكشنري ها مانند كلكسيون هاي Visual Basic ، ليستي از مقادير جفت جفت هستند.
اين مقادير جفتي را جفت هاي وابسته ( Association ) مي ناميم . هر يك از اين جفتهاي وابسته شامل يك كليد (key ) و يك مقدار متناظر آن هستند. كليد يك مقدار رشته اي است و متناظر آن از جنس Variant است . بنابراين هر كليد مي تواند به يك مقدار ديگر از هر نوع ، مثل Integer ، Object و يا Nothing وابسته باشد .
شما مي توانيد شيء Application را مانند بقيه متغيير هاي عمومي ( Global ) برنامه خود به كار بريد. ولي براي ذخيره مقادير به غير از انواع داده هاي ساده و آرايه ها از آن استفاده نكنيد . امكان ذخيره اشيائي كه از مدل ريسماني آپارتمان ( Apartment Threading Model ) استفاده مي كننددر شيء Application وجود ندارد .


شيء Session :
هر برنامه كاربردي مي تواند چندين جلسه كاري داشته باشد كه هر يك از اين جلسات به يكي از كاربران برنامه مربوط مي شود . شيء Session مانند شيء Application مي تواند براي ذخيره كردند متغير ها و اشياء ديگر بكار رودو مانند ديكشنري ، در برگيرنده كليد ها و مقادير متناظر آنها مي باشد . تنها تفاوت اين شيء با شيء Application در اين است كه براي هر كاربر يك شيء Session منحصر به فرد اختصاص داده مي شود در حالي كه شيء Application بين تمام كاربران مشترك است .

تعريف جلسه كاري :
در اين نقطه بهتر است مفهوم جلسه كاري را شرح دهيم . مفهوم يك جلسه در عين سادگي كمي پيچيده به نظر مي رسد. هنگامي كه يك كاربر يكي از صفحات يك برنامه كاربردي تحت وب را درخواست كند و مرورگر آن كاربر يك SessionID ( SessionID يك نوع Cookie است ) معتبر كه توسط ASP توليد شده باشد را به همراه درخواست ارسال نكند، يك جلسه كاري براي آن كاربر آغاز مي شود . هنگامي كه موتور ASP يك درخواست را بدون يك SessionID معتبر از يك مرورگر دريافت مي كند ، يك شيء Session جديد مي سازد ، يك مقدار تصادفي به SessionID اختصاص داده و Cookie ( در مورد Cookie ها بعدا به طور مفصل بحث خواهيم كرد.فعلا همين را بدانيد كه Cookie ها براي نگهداري وضعيت جلسات بكار ميروند. هر Cookie به صورت يك جفت وابسته است كه روي كامپيوتر سرويس گيرنده ذخيره ميشود ) آن را مقدار دهي مي كند . از اين به بعد تمام درخواست ها يي كه از سوي آن مرورگر ارسال مي شوند ، مقدار آن SessionID را به همراه خواهند داشت و موتور ASP با استفاده از SessionID شيء Session مربوط به آن كاربر را شناسايي مي كند . در واقع ASP از اين طريق اطلاعات مربوط به يك كاربر خاص را بين درخواست ها نگهداري مي كند .
اگر مرور گر كاربر از Cookie پشتيباني نكند و يا كاربر آن را به گونه اي تنظيم كرده باشد كه Cookie را قبول نكند ، SessionID توليد شده توسط ASP از سوي مرورگر پذيرفته نمي شود و كاربر مزبور يك شيء Session معتبر نخواهد داشت .
در اين حالت چون مقدار Cookie از بين مي رود ، موتورASP نمي تواند در خواست هاي بعدي رابه شيء Session متصل كند . به علاوه ، با رسيدن هر درخواست از سوي مرورگر ، موتور ASP يك شيء Session جديد خواهد ساخت. بنابراين باز هم مي توانيد متغير هاي دلخواه خود را در شيء Session ذخيره كنيد ، ولي پس از اين كه دستورات موجود در آن صفحه (منظور صفحه اي است كه شيء Session را در آن بكار برده ايد ) به پايان رسيد ، شيء Session مزبور از درجه اعتبار ساقط مي شود و ديگر نبايد از مقادير درون آن استفاده كنيد .

شيء Request :
مرورگر ها براي هر صفحه درخواستي ، اطلاعات زيادي را به سرويس دهنده ارسال مي كنند. معمولا هنگامي كه شما صفحات مختلف يك سايت را مشاهده ميكنيد، هيچ يك از اين اطلاعات را نمي بينيد، ولي اين اطلاعات براي استفاده برنامه هاي كاربردي روي سرويس دهنده در دسترس ميباشند. موتور ASP اين اطلاعات را به شكل زيبايي در يك شيء به نام Request بسته بندي مي كند.
شيء Request تمام اطلاعات سرآيند( Header ) را به همراه درخواست صفحه مورد نظر كاربر و همچنين اطلاعاتي كه ممكن است كاربر در فيلد هاي يك فرم HTML وارد كرده باشد دربر مي گيرد . براي بدست آوردن اين اطلاعات مي توانيد از ويژگي ها و كلكسيون هاي شيء Request استفاده كنيد .

Nesta
07-04-2005, 03:48
براي پاسخ گويي به مرورگر ، از متدهاي شيء Response استفاده مي شود . در واقع شيء Response راهي براي برقراري ارتباط با سرويس گيرنده است .

شيء Scripting Context :
اين شيء امكان دسترسي اشياء ActiveX خارجي به اشياء دروني ASP را فراهم مي كند. البته بهتر است به جاي اين شيء از شيء Object Context استفاده كنيد . براي گرفتن شيء Object Context نيز بايد متد Object Context() را فراخواني كنيد .
شيء Scripting Context ، تمام اشياء ASP را درون خود جمع مي كند . هنگامي كه يك صفحه ASPكه شامل رفرنس هايي به اشياء ActiveX مي باشد اجراء ميشود ، ابتدا موتور ASP متد On Start Page هر يك از آن اشياء ActiveX را فراخواني كرده و شيء Scripting Context را به عنوان پارامتر به آن مي فرستد. اشياء ActiveX با استفاده از اين پارامتر مي توانند اشاره گر هايي به اشياء Server ، Application ، Request و Response به دست آورند. در اين جا ليستي از ويژگي هاي شيء Scripting Context را ملاحظه مي كنيد :
• Server
• Application
• Session
• Request
• Response

هر يك از اين 5 ويژگي يك اشاره گر ( Pointer ) به يكي از اشياء دروني ASP بر مي گردانند .
• توجه : Microsoft توصيه مي كند كه به جاي استفاده از شيء Scripting Context از متد
get Object Context اگر چه امكان استفاده از شيء Scripting Context كماكان وجود دارد، ولي بايد بدانيد كه اين شيء از رده خارج شده و در برنامه هاي جديد خود نبايد از آن استفاده كنيد .

شيء Object Context :
شيء Object Context به عنوان پل ارتباطي با MTS ( Microsoft Transaction Server ) تلقي مي شود. با MTS شما مي توانيد كاري كنيد كه اشياء ActiveX در تراكنش هايي كه صفحه ASP آغاز شده اند شركت كنند. همچنين با استفاده از شيء Object Context در هنگام نوشتن اشياء ActiveX مي توانيد به اشياء دروني ASP دسترسي پيدا كنيد .
آشنايي با ساختار يك برنامه ASP
از نظر موتور ASP ، يك برنامه كاربردي عبارت است از مجموعه اي از تمام فايل و زير دايركتوري هاي ( Subdirectory ) موجود در يك دايركتوري كه شامل فايل Global . asa باشد . بيشتر برنامه هاي كاربردي ASP شامل فايل هاي ASP و فايل هاي Include ( با پسوند .inc ) هستند كه هر دوي آنها مي توانند تركيبي از HTML ، كد و فايل هاي گرافيكي باشند. البته شما مي توانيد فايل هاي ASP را با فايل هاي HTML يا هر فايل ديگري كه براي سرويس دهنده قابل شناسايي باشد تركيب كنيد .
شكل زير ساختار يك برنامه كاربردي ASP نمونه را نشان مي دهد:
شكل صفحه 25

بالاترين دايركتوري در اين ساختار شامل فايل Global . asa است . اين فايل دايركتوري ريشه ( Root Directory )
برنامه كاربردي را مشخص مي كند .
اولين باري كه يك كاربر يكي از فايل هاي ASP موجود در يكي از دايركتوري هاي برنامه را درخواست مي كند ، موتور ASP ساختار درختي درختي دايركتوري ها را به سمت بالا طي ميكند تا فايل Global . asa را پيدا كند و يا به ريشه وب ( Root Web Directory ) برسد . اين نكته از اهميت زيادي برخوردار است ، چون اگر شما چند برنامه كاربردي را درون هم قرار دهيد ( كه به آنها برنامه هاي كاربردي تودرتو – Nested Applications - مي گويند ) ، فايل Global . asa كه براي هر درخواست كاربر اجرا مي شود بستگي دارد به اين كه كاربر ابتدا كدام فايل را درخواست نمايد . چون نمي توان اولين درخواست كاربر را كنترل نمود ، بهتر است برنامه هاي ASP را درون هم قرار ندهيد ؛ مگر اين كه دليل موجهي براي اين كار داشته باشيد .
ساختن يك برنامه كاربردي وب تحت IIS 4.0 به يك مرحله ديگر نيز دارد : شما بايد به IIS بگوييد كه دايركتوري مجازي ( Virtual Directory ) در برگيرنده فايل Global . asa ، دايركتوري ريشه برنامه كاربردي است .
صرف نظر از اين كه كدام فايل درخواست شود، فايل Global . asa همواره اولين فايلي خواهد بود كه اجرا ميشود. بنابراين اگر در نظر داريد كاربر برنامه كاربردي شما را با صفحه خاصي كه مورد نظر شماست آغاز كند ، اين فايل بهترين جايي است كه ميتوانيد مرورگر را به آن صفحه هدايت كنيد .
برنامه كاربردي كه درشكل قبل ملاحظه فرموديد ، شامل چندين فايل ASP و دو زيردايركتوري به نام هاي images و include مي باشد. البته از نظر تعيين ساختار دايركتوري هاي يك برنامه كاربردي هيچ محدوديتي وجود ندارد ؛ شما مي توانيد همه فايل ها را درون يك دايركتوري قرار دهيد . ولي در عمل ، بهتر است كه فايل ها را بر اساس كارايي آنها دسته بندي كنيد چون اين كار ساختن و نگهداري برنامه را بسيار آسان تر مي كند .
• توجه : دايركتوري ريشه وب و دايركتوري ريشه برنامه ASP لزوما نبايد يكسان باشند. به عنوان مثال ،
مي توانيد براي چندبرنامه كاربردي ASP ازيك فايل Global . asa استفاده كنيد. در اين شرايط مي توانيد فايل Global . asa را درون يك دايركتوري قرار داده و سپس هر يك از زير دايركتوري هاي درون آن را به عنوان يك دايركتوري مجازي تعريف كنيد كه بر اساس برنامه كاربردي مربوطه نامگذاري شده اند . ساختار دايركتوري موجود در شكل زير ، شامل 4 برنامه كاربردي است : 401k ، Paycheck ، Retirement ، Timesheet .شكل صفحه 26
بالاترين دايركتوري ، كه HR Applications نام دارد، شامل فايل Global . asa است . هر زمان كه يك كاربر به يكي از 4 برنامه كاربردي موجود متصل شود ، موتور ASP ساختار درختي دايركتوري هارا بالا مي رود تا به دايركتوري
HR Applications كه در بر گيرنده فايل كه Global . asa است برسد . يكي از دلايلي كه مي توان براي مرتب كردن برنامه ها به اين شكل در نظر گرفت ، اين است كه ممكن است هر چهار برنامه از يك روش امنيتي استفاده كنند و يا ممكن است تمام برنامه ها از يك نوع روش براي برقراي ارتباط با پايگاه داده و يا از يك پايگاه داده مشترك استفاده كنند و شما بخواهيد اطلاعات اوليه را در فايل Global . asa تنظيم كنيد .

استفاده از فايل هاي Include :
براي جلوگيري از تكرار كد يا دستورات HTML در صفحات ASP ، مي توانيد از فايل هاي خارجي استفاده كرده و آنها را در صفحات ASP خود بگنجانيد . يك فايل Include در يك فايل ASP از دستور INCLUDE استفاده مي شود . دستور INCLUDE مشابه اين است كه محتويات فايل include مورد نظر را درون يك صفحه ديگر قرار دهيد.در اين جا مثالي از يك دستور INCLUDE را مشاهده مي كنيد :

<!--# INCLUDE = “C:\ include \my Include .inc” -- >


اين دستور سبب مي شود كه سرويس دهنده آن را با محتويات فايل مشخص شده جايگزين كند. دو نوع دستور INCLUDE موجود است : يكي # INCLUDE FILE و ديگري # INCLUDE VIRTUAL . نوع اول براي مشخص كردن فايل به يك آدرس فيزيكي نياز دارد در حالي كه نوع دوم به آدرس مجازي به فايل اشاره مي كند . به هر حال از هر روشي كه استفاده كنيد، موتور ASP قبل از شروع پردازش دستورات ، آن را با محتويات فايل مورد نظر جايگزين مي كند . بنابر اين براي گنجانيدن يك فايل نمي توانيد از دستورات شرطي استفاده كنيد . به عنوان مثال ، كد زير به گونهاي كه انتظار مي رود عمل نخواهد كرد ؛ موتور ASP هر دو فايل را خواهد گنجاند :

< %
if my Var = True than
% >
< ! -- # INCLUDE FILE = “ C: \ include \ my Include . inc” -- >
< %
else
%>
< ! -- # INCLUDE FILE = “ C: \ include \ your Include . inc” -- >
< %
end if
% >

هنگامي كه موتور ASP اين فايل را تحليل مي كند ، دو دستور INCLUDE را با فايل هاي نامبرده جايگزين مي كند و اين كار را قبل از اجراي دستور if…end if انجام مي دهد . پس باز هم تاكيد مي كنم : شما با استفاده از كد نمي توانيد براي موتور ASP تعيين كنيد كه كدام فايل را بگنجاند و يا اين كه اصلا يك فايل را بگنجاند يا خير.

Nesta
07-04-2005, 03:50
با استفاده از آبجکت CDONTS که يکي از کامپوننتهاي ويندوز سرور 2000 و ان تي مي باشد به راحتي مي توان در اسکريپتهاي سمت سرور
ايميل ارسال کرد.
طريقه استفاده به شکل زير مي باشد

<%
Dim objNewMail
Set objNewMail = Server.CreateObject("CDONTS.NewMail")
%>

مقادير قابل تنظيم براي اين آبجکت به شرح جدول زير مي باشد.

From يک مقدار رشته اي که آدرس پست الکترونيکي فرستنده را مشخص مي کند
(به طور مثال Me@somewhere.com)
To يک مقدار رشته اي که آدرس پست الکترونيکي گيرنده را مشخص مي کند.
(به طور مثال, someone@somewhere.com)
آدرس گيرنده هاي مختلف با استفاده از علامت روبرو امکان پذير ميباشد ";"
Subject عنوان پيام
Body متن پيام
Cc آدرس پست الکترونيکي شخصي که قرار است يک کپي از نامه را دريافت کند
Bcc آدرس الکترونيکي شخصي که قرار است يک کپي از نامه را دريافت کند ( بدون اطلاع دريافت کننده نامه)
Importance يک مقدار عددي که نشان دهنده در جه اهميت نامه مي باشد
(براي مثال خيلي مهم , مهم , عادي )
BodyFormat يک مقدار عددي که نشان دهنده فرمت اطلاعات متن نامه مي باشد
ObjMail.BodyFormat = 0 (HTML format)
ObjMail.BodyFormat = 1 (متن عادي)
MailFormat يک مقدار عددي که نشان دهنده فرمت اطلاعات نامه مي باشد
ObjMail.MailFormat = 0 (Mime format)
ObjMail.MailFormat = 1 (متن عادي)




متودهاي اين آبجکت

AttachFile اين متود يک فايل را به نامه پيوست مي کند
AttachURL اين متود آدرس فايل پيوست شده را تخصيص مي دهد
Send اين متود نامه را ارسال مي کند
بعد از ارسال ايميل مقادير در حافظه باقي مي ماند و شما بايد حافظه را خالي کنيد. همچنين براي ارسال يک ايميل جديد بايد يک آبجکت جديد
ايجاد کرده و از آن استفاده کنيد. کد زير نحوه استفاده از اين آبجکت را در asp نشان مي دهد.

<%
Option Explicit

Dim objNewMail

' ابتدا يک آبجکت از نوع cdonts ايجاد مي کنيم
Set objNewMail = Server.CreateObject("CDONTS.NewMail")

' بعد از ايجاد آبجکت ما بايد مقادير مربوط به آن را تنظيم کنيم

objNewMail.From = "webmaster@iran.com"
objNewMail.To = "test@yahoo.com"

objNewMail.Subject = "اين يک ايميل تستي است"
objNewMail.Body = "اين متن نامه است"
objNewMail.Send

' بعد از ارسال ايميل با استفاده از کد زير فضاي حافظه را خالي مي کنيم

Set objNewMail = Nothing

Response.Write "ايميل ارسال شد"

%>


موفق و پيروز باشيد