Page 1 Sur 1
Page 1 Sur 1
ada99:00001.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00002.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00003.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00004.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00005.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00006.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00007.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00008.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00009.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00010.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
Page 1 sur 1
ada99:00011.gif 14-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
إﺟﺮاء اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت Page 1 sur 2
ھﺬا درس ﻣﮫﻢ ﻟﻠﻐﺎﻳﺔ و أﺳﺎس ﻟﻠﻌﻤﻞ ﻓﻲ ﺗﻄﺒﯿﻘﺎت اﻟﻮﻳﺐ اﻟﻤﺘﻔﺎﻋﻠﺔ ..و ﻧﻨﺼﺢ ﺑﻤﺘﺎﺑﻌﺔ دروس اﻹﺳﺘﻌﻼم SQLو اﻟﺘﻲ و
ﺿﻌﺘﮫﺎ أﺻﻼ ﻓﻲ ھﺬا اﻟﻤﻮﻗﻊ ﺧﺼﯿﺼﺎ ﻣﻦ أﺟﻞ ﺗﻘﻨﯿﺔ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ ..و ﻓﻲ درﺳﻨﺎ ھﺬا ﺳﻨﺘﻨﺎول أھﻢ اﻟﻌﻤﻠﯿﺎت اﻟﺘﻲ ﺗﺠﺮي
ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻧﺘﯿﺠﺔ ﺣﺪث اﺧﺘﺎره اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﻋﻤﻠﯿﺎت ﺣﺬف و إﺿﺎﻓﺔ و ﺗﻌﺪﻳﻞ ﻛﻼ ﻋﻠﻰ ﺣﺪة ..و ﻟﻨﺒﺪا اﻟﺪرس :
ﻃﺒﻌﺎ ھﺬه اﻟﻄﺮﻳﻘﺔ ﻣﺒﻨﯿﺔ ﻧﻮﻋﺎ ﻣﺎ ﻋﻠﻰ ﻃﺮﻳﻘﺘﯿﻦ و ھﻲ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ اﻹﺳﺘﻌﻼم ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﯿﺔ :
ﻓﻨﺮى ﻣﻦ ھﺬا اﻟﻤﺜﺎل أﻧﻪ ﻗﺪ أرﺳﻠﺖ ﺑﯿﺎﻧﺎت ﻣﻦ ﻧﻮذج ﺑﻪ ﺣﻘﻮل ﺗﺤﻮي ﻣﻌﻠﻮﻣﺎت اﻟﻄﺎﻟﺐ و ﻗﻤﻨﺎ ﻓﻲ ھﺬه اﻟﺼﻔﺤﺔ ﺑﺈﺳﻨﺎدھﺎ ﻟﻘﯿﻢ
ﻣﺜﻞ strNameو ﻏﯿﺮھﺎ ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ ﺟﻤﻠﺔ اﻹﺿﺎﻓﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻟﻐﺔ اﻹﺳﺘﻌﻼم اﻟﺘﺮﻛﯿﺒﯿﺔ و اﻟﺘﻲ اﺧﺘﺎرت اﻟﺤﻘﻮل اﻟﺘﻲ ﺳﺘﻀﯿﻒ
إﻟﯿﮫﺎ و ﺣﺪدت اﻟﻘﯿﻢ اﻟﻤﻀﺎﻓﺔ و ھﻲ اﻟﻘﯿﻢ اﻟﻤﺴﻨﺪ إﻟﯿﮫﺎ اﻟﻘﯿﻢ اﻟﻘﺎدﻣﺔ ﻣﻦ اﻟﻨﻤﻮذج ..
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
)"Set rs=CreateObject("ADODB.recordset
)"strName=request("studentName
)"strNo=request("studentName
)"strClass=request("class
rs.AddNew
rs("studentName")=strName
rs("studentNo")=strNo
rs("class")=strClass
rs.Update
rs.Close
>Set rs=nothing %
و ﻛﻤﺎ رأﻳﻨﺎ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﯿﺔ و ھﻲ ﺗﺄﻣﺮ ﺑﺤﺠﺰ ﺳﺠﻞ ﺟﺪﻳﺪ ﺑﺎﺳﺘﺨﺪام اﻷﻣﺮ rs.AddNewﺛﻢ ﺗﻘﻮم ﺑﺘﺨﺰﻳﻦ اﻟﻘﯿﻢ ﻓﻲ اﻟﺤﻘﻮل اﻟﺘﻲ
ﺣﺪدﻧﺎه ﺛﻢ ﺗﻘﻮم ﺑﺎﻟﺘﺄﻛﺪ ﻣﻦ ﺗﺨﺰﻳﻨﮫﺎ ﺑﺎﺳﺘﺨﺪام ،، rs.Updateو ﻟﻠﻌﻠﻢ ﻓﻲ ﻛﻠﺘﺎ اﻟﻄﺮﻳﻘﺘﯿﻦ إذا ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪ أي ﺣﻘﻞ ﻓﺈﻧﻪ ﺳﯿﺘﺮك
ﻓﺎرﻏﺎ ..
أﻣﺎ اﻻن ﻓﺴﺄﻗﻮم ﺑﻄﺮح ﺻﯿﻐﺔ ﻟﺘﻌﺪﻳﻞ اﻟﺒﯿﺎﻧﺎت و ﻓﻲ ﺣﻘﯿﻘﺔ اﻷﻣﺮ ھﻨﺎك ﻃﺮق و وﺳﺎﺋﻞ ﻋﺪة ﻟﺬﻟﻚ ﻣﺜﻞ ﻃﺮﻳﻘﺔ RecordSetأﻣﺎ ھﺬا
اﻟﻤﺜﺎل ﻓﺴﯿﻜﻮن ﻣﺒﻨﯿﺎ ﻋﻠﻰ ﻟﻐﺔ اﻹﺳﺘﻌﻼم اﻟﻤﺮﻛﺒﺔ .. SQL
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
"Name="Ahmed
) " ' "&Set rs=cn.execute("update students_Table set studentName=' "Ali" ' where studentName=' "&Name
>%
ﻟﻜﻦ ھﻞ ﻳﻤﻜﻨﻚ ﻟﻮﺣﺪك اﺳﺘﻨﺘﺎج اﻟﻄﺮﻳﻘﺔ اﻷﺧﺮى ؟؟ ﻋﺪ ﻟﻤﺜﺎل إدﺧﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺜﺎﻧﻲ ..و ﻓﻜﺮ ﻣﺎ ھﻮ اﻟﺸﻲء اﻟﺬي ﺳﺘﺤﺬﻓﻪ ؟؟ ھﻞ
ھﻮ rs.AddNew؟؟ و ﻣﺎ اﻟﺬي ﺳﺘﻀﯿﻔﻪ ..ھﻞ ھﻲ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﺴﺠﻞ اﻟﺬي ﺑﻪ اﺳﻢ اﻟﻄﺎﻟﺐ أﺣﻤﺪ ..ﻓﻲ واﻗﻊ اﻷﻣﺮ
ﻟﻘﺪ ﻗﻤﺖ أﻧﺎ ﺑﺎﻹﺟﺎﺑﺔ ..ﻟﻜﻦ ﺳﺄﺗﺮك ﻟﻚ اﻟﺠﺎﻧﺐ اﻟﺒﺮﻣﺠﻲ و ھﻲ ﻓﻲ ﻗﻤﺔ اﻟﺴﮫﻮﻟﺔ ..
أﻧﺎأﻇﻨﻚ ﻋﺮﻓﺘﮫﺎ ﻟﻮﺣﺪك دون ﻣﺜﺎل ﻟﻜﻦ ﻻ ﻣﺎﻧﻊ ﻣﻦ ذﻛﺮھﺎ ﻛﻤﺮﺟﻊ ﻟﻚ و اﻟﻄﺮﻳﻘﺔ ھﻲ اﻟﺘﺎﻟﯿﺔ :
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
if request("studentNo") then
)"cn.execute "delete * from comments where studentNo="&request("studentNo
end if
>%
و ﻟﻘﺪ ﺗﻌﻤﺪت ذﻛﺮ ﻃﺮﻳﻘﺔ اﻹﺳﺘﻌﻼم ﺑﺄﻛﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ ﻣﺜﻞ وﺿﻌﮫﺎ ﺑﯿﻦ اﻷﻗﻮاس أو ﻋﺪم وﺿﻊ اﻷﻗﻮاس ﻛﻲ ﺗﺴﺘﻨﺘﺞ ﺑﻨﻔﺴﻚ ﻣﺪى
ﺗﻌﺪد اﻟﻄﺮق اﻟﻤﮫﻢ ﺻﺤﺘﮫﺎ اﻟﺒﺮﻣﺠﯿﺔ ..و ذﻟﻚ أﺣﺪ اﻷﺳﺒﺎب اﻟﺘﻲ ﺗﻌﻄﻲ ﺗﻘﻨﯿﺔ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ إﻣﺘﯿﺎزات ﻋﻠﻰ ﻏﯿﺮھﺎ ﻣﻦ ﻟﻐﺎت
اﻟﻮﻳﺐ ..
و ھﻜﺬا وﺻﻠﻨﺎ ﻟﻨﮫﺎﻳﺔ ھﺬا اﻟﺪرس و اﻟﺬي أﻗﻮل ﻟﻜﻢ ﻓﯿﻪ أن ﺗﻌﻮدوا ﻟﻮرﺷﺔ اﻟﻌﻤﻞ ﻟﺘﺮوا اﻷﻣﺜﻠﺔ ﻋﻠﻰ ھﺬه اﻷﻛﻮاد ﻣﻦ ﺧﻼل ﺗﻄﺒﯿﻘﺎت
ﻣﺨﺘﻠﻔﺔ ﻣﺜﻞ ﻋﻤﻞ ﺳﺠﻞ زوار أو ﻣﺸﺮوع اﻟﻌﻼﻣﺎت اﻟﺠﺎﻣﻌﯿﺔ و اﻟﺒﺤﺚ و ﻏﯿﺮھﺎ اﻟﻜﺜﯿﺮ ..و ﻻ ﺗﻈﻨﻮا أن ورﺷﺔ اﻟﻌﻤﻞ وﺿﻌﺖ ﻋﺒﺜﺎ ..
ﺗﻌﺘﺒﺮ اﻟﻨﻤﺎذج ﻣﻦ أﻛﺜﺮ اﻟﻄﺮق اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻧﻘﻞ اﻟﻤﻌﻠﻮﻣﺎت و اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﻓﻲ ﺗﻄﺒﯿﻘﺎت ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ
. ASPﻓﻤﺜﻼ أﻏﻠﺐ اﻟﺒﯿـــــﺎﻧﺎت اﻟﺘﻲ ﻧﺴﺘﺨـﺪﻣﮫﺎ ھﻲ ﻛﻠﻤﺎت ﻣﺮور و أﺳﻤﺎء ﻣﺴﺘﺨﺪﻣﯿﻦ و أﻋﻀﺎء و ﻛﺘﺎﺑﺔ ﻣﻘﺎﻻت و ﻓﻘﺮات و ﻣﻦ
اﻟﻄﺒﯿﻌﻲ إدﺧﺎﻟﮫﺎ إﻟﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﻳﻖ ﻧﻤﺎذج أو ﻣﺎ ﺗﺴﻤﻰ ﺑﺎل . FORMو ﻗﺪ ذﻛﺮت أﻣﺜﻠﺔ ﻋﺪة ﻓﻲ دروس اﻟﺴﻜﺮﻳﺒﺖ ﺗﻌﺎﻟﺞ
ﻣﻮﺿﻮع اﻟﻨﻤﺎذج ﻟﻜﻦ ھﻨﺎﻟﻚ اﺧﺘﻼف ﺑﺴﯿﻂ ﺑﯿﻨﮫﻤﺎ و ھﻮ أﻧﻨﺎ ﺳﻨﺴﺘﺨﺪم ﻃﺮق ﻟﻠﻨﻤﻮذج ﻣﺜﻞ POSTو GETﻟﻨﻘﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺪﺧﻠﺔ و
ﺳﻨﺘﻌﺮف ﻣﺎ اﻟﻔﺮق ﺑﯿﻨﮫﻤﺎ و أﻳﻦ ﻧﺤﺘﺎج ھﺬه و ﻣﺘﻰ ﻧﺨﺘﺎر اﻷﺧﺮى ..و ﻟﻨﺒﺪأ درﺳﻨﺎ ﺑﺘﻌﺮﻳﻒ ﺷﻜﻞ اﻟﻨﻤﻮذج و ﺑﯿﺎن اﻻﺧﺘﻼف ﺑﯿﻦ ﻃﺮﻗﻪ :
ﻓﻲ اﻟﺒﺪاﻳﺔ ﻧﻔﺮض أن ﻟﺪﻳﻨﺎ ﺻﻔﺤﺔ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﻃﺎﻟﺐ ،ﻓﻜﯿﻒ ﻳﺘﻢ ذﻟﻚ ؟؟ ﻣﻦ اﻟﻤﻨﻄﻘﻲ أن ﺻﻔﺤﺔ اﻟﺘﺤﻘﻖ ﺳﺘﺴﺘﻘﺒﻞ ﺑﯿﺎﻧﺎت اﻟﻄﺎﻟﺐ
ﻣﻦ اﺳﻢ و رﻗﻢ ﺟﺎﻣﻌﻲ ﻣﺜﻼ ﻣﻦ اﻟﺼﻔﺤﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻣﺜﻼ ﻟﻜﻦ ﻛﯿﻒ ﺗﻨﺘﻘﻞ ھﺬه اﻟﺒﯿﺎﻧﺎت ؟؟؟ ھﺬا ﻣﺎ ﺳﻨﺮاه ..
<%
)"name=request.Form("name
)"password=request.Form("password
"&set rs=cn.Execute("select * from students_table where studentName=' "&name&" ' and studentNo =' "&password
)" '
if rs.eof then
"اﻟﻄﺎﻟﺐ ﻏﯿﺮ ﻣﻮﺟﻮد" response.write
else
" اﻟﻄﺎﻟﺐ ﻣﻮﺟﻮد" response.write
end if
>%
ﻣﻦ اﻟﻮاﺿﺢ ﻟﻠﻨﺎﻇﺮ أن اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻳﺨﺺ ﺻﻔﺤﺔ اﻟﺘﺤﻘﻖ ﻣﻦ اﻟﺒﯿﺎﻧﺎت ..ﻃﺒﻌﺎ ﺟﺰءا ﻣﻦ اﻟﺼﻔﺤﺔ ..و ﻧﺮى أن اﻟﺼﻔﺤﺔ
ﺗﺴﺘﻘﺒﻞ اﻟﻌﻨـﺎﺻﺮ nameو passwordﻋﻦ ﻃﺮﻳﻖ اﻟﻜﺎﺋﻦ .. requestو أﺳﻨﺪﻧﺎ اﻟﻘﯿﻢ ﻟﻤﺘﻐﯿﺮات ﻛﻲ ﺗﺴﮫﻞ ﻋﻤﻠﯿﺔ اﻟﻤﻘﺎرﻧﺔ ﻻ ﻏﯿﺮ ..ﺛﻢ
اﺳﺘﺨﺪﻣﻨﺎ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﺴﺠﻞ اﻟﺬي ﻳﺤﻤﻞ اﺳﻢ و رﻗﻢ اﻟﻄﺎﻟﺐ و إذا ﻟﻢ ﻳﺠﺪه ﺳﯿﻈﮫﺮ رﺳﺎﻟﺔ ﺗﻌﺮف ﺑﻌﺪم وﺟﻮد
اﻟﻄﺎﻟﺐ و إﻻ ﺳﯿﺨﺒﺮك ﺑﻮﺟﻮده ...ﻟﻜﻦ ھﻞ ﺗﻌﻠﻢ ﺑﺄن ﻛﻠﻤﺔ Nameو Passwordھﻲ أﺳﻤﺎء اﻟﺤﻘﻮل ﻓﻲ اﻟﻨﻤﻮذج اﻟﺬي ﻳﺮﺳﻞ اﻟﺒﯿﺎﻧﺎت
ﻟﮫﺬه اﻟﺼﻔﺤﺔ ..و ھﺬا ﻣﺜﺎل ﻟﻠﻨﻤﻮذج :
ﻃﺒﻌﺎ اﻟﺰر ﻣﻦ ﻧﻮع submitأي أﻧﻪ ﻋﻨﺪ اﻟﻀﻐﻂ ﻳﻘﻮم ﺑﺘﻨﻔﯿﺬ اﻟﺤﻘﻞ ﺣﺴﺐ ﻣﻌﻠﻮﻣﺎت اﻟﺤﻘﻞ ..و ھﻨﺎ ﻧﺮى ﻓﻲ اﻟﺤﻘﻞ أن اﻟﺤﺪث
اﻟﻤﺮﺗﺒﻂ ﺑﻪ actionھﻮ اﻻﻧﺘﻘﺎل ﻟﺼﻔﺤﺔ check.aspو ھﻲ ﺻﻔﺤﺔ اﻟﺘﺄﻛﺪ ﻣﻦ اﻟﺒﯿﺎﻧﺎت ،ﻛﻤﺎ ﻧﺮى و ھﺬا ﻣﮫﻢ ﻟﻠﻐﺎﻳﺔ أﻧﻪ اﺳﺘﺨﺪم ﻃﺮﻳﻘﺔ
postو ﺳﺄذﻛﺮ ﻓﻲ اﺧﺮ اﻟﺪرس أھﻤﯿﺘﮫﺎ و اﺧﺘﻼﻓﮫﺎ ﻋﻦ ﻃﺮﻳﻘﺔ .. GETﻃﺒﻌﺎ اﻟﻨﻮذج ﻳﺮﺳﻞ اﻟﺒﯿﺎﻧﺎت ﻟﻠﺼﻔﺤﺔ اﻟﻤﺤﺪدة و ﻗﺪ ﺗﻜﻮن ﻧﻔﺲ
اﻟﺼﻔﺤﺔ و اﻟﺘﻲ ﺑﺪورھﺎ ﺗﺄﺧﺬ اﻟﺒﯿﺎﻧﺎت و ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ ﺣﺴﺐ وﻇﯿﻔﺔ اﻟﺼﻔﺤﺔ ..
أﻣﺎ اﻟﻄﺮﻳﻘﺔ اﻷﺧﺮى ﻃﺮﻳﻘﺔ GETﻓﮫﻲ ﺗﺨﺘﻠﻒ ﻧﻮﻋﺎ ﻣﺎ ﻋﻦ اﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ و ﻟﺘﻮﺿﯿﺢ ﻣﺎ أﻗﺼﺪ ﻧﺮى ھﺬا اﻟﻨﻤﻮذج اﻟﺬي
ﻧﻔﺘﺮض أﻧﻪ ﻳﻌﺮض ﻣﻘﺎﻻت ﻟﻠﻄﺎﻟﺐ اﻟﺬي ﻛﺘﺐ اﺳﻤﻪ و ھﺬا ھﻮ اﻟﻤﺜﺎل :
رأﻳﻨﺎ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ﻃﺮﻳﻘﺔ GETﺑﺪﻻ ﻣﻦ POSTو ﻧﺮى أول اﺧﺘﻼف و ھﻮ ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰر ..ﻓﻨﺮاه
ﻛﺎﻟﺘﺎﻟﻲ :
check.asp?name=mohd&password=12345&send=send
ﻛﻤﺎ ﻧﺮى ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان أﻧﻪ ﺑﻌﺪ اﺳﻢ اﻟﺼﻔﺤﺔ ﻇﮫﺮت إﺷﺎرة ؟ و ھﻲ ﺗﻔﯿﺪ أن ﻣﺎ ﺑﻌﺪھﺎ ھﻲ ﻗﯿﻢ ﻣﺮﺳﻠﺔ ﺑﻮاﺳﻄﺔ ﻧﻤﻮذج ﻣﺎ و
ھﻲ ﻛﻤﺎ ﻧﺮى ﺗﺒﺪأ ﺑﻜﻠﻤﺔ nameو ھﻲ ﺗﺴﺎوي Mohdو ھﻲ اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻟﻠﺤﻘﻞ nameﻗﺒﻞ ارﺳﺎل اﻟﺒﯿﺎﻧﺎت و ﻛﺬﻟﻚ ﻛﻠﻤﺔ اﻟﻤﺮور
ﻛﻤﺎ أرﺳﻞ اﻟﻨﻤﻮذج اﺳﻢ اﻟﺰر sendو ﻛﻤﺎ ﻧﺮى ﻓﺈن اﻟﻘﯿﻢ اﻟﻤﺴﻨﺪة ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ھﻲ اﻟﻘﯿﻤﺔ valueﻟﻜﻞ ﺣﻘﻞ ﻛﻞ ﻟﻮﺣﺪه ..و
ﻃﺒﻌﺎ ﻗﯿﻤﺔ اﻟﺰر sendھﻲ sendﻛﻤﺎ ﻛﺘﺒﻨﺎھﺎ ﻓﻲ اﻟﻨﻤﻮذج أﻣﺎم .. nameو ھﻜﺬا ..ﻟﻜﻦ ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ ﻋﺮض اﻟﻄﻠﺒﺔ اﻟﺬﻳﻦ ﻳﺤﻤﻠﻮن ﻧﻔﺲ
اﻹﺳﻢ ؟؟ اﻧﻈﺮ ھﺬا اﻟﻜﻮد :
)"<% name=request.QueryString("name
set rs=cn.execute "select * from students_table where studentName="&name
while not rs.eof
response.write rs("studentName") & VbCrLf
rs.movenext
>WEND %
ﻛﻤﺎ رأﻳﻨﺎ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ request.QueryStringﺑﺪﻻ ﻣﻦ request.Formو اﻷوﻟﻰ ﺗﻤﻜﻨﻨﺎ ﻣﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻘﯿﻢ اﻟﻤﻮﺟﻮدة ﻓﻲ
ﺷﺮﻳﻂ اﻟﻌﻨﻮان و اﻟﻤﺮﺳﻠﺔ ﻣﻦ ﻧﻤﻮذج ﻣﺎ ..و ﻧﺮى أﻧﻨﺎ وﺿﻌﻨﺎ ﺑﯿﻦ اﻷﻗﻮاس ﻛﻠﻤﺔ nameو ھﻲ ﺑﺎﻟﺘﺎﻟﻲ ﺗﻔﯿﺪ ﻓﻲ أﺧﺬ ﻗﯿﻤﺔ name
اﻟﻤﺮﺳﻠﺔ و ھﻲ ﺗﺄﺧﺬ ﻛﻞ اﻟﻜﻼم ﺑﻌﺪ إﺷﺎرة = و ﺣﺘﻰ إﺷﺎرة & إن وﺟﺪت و اﻟﺘﻲ ﺗﻔﯿﺪ وﺟﻮد ﻗﯿﻤﺔ أﺧﺮى ﻣﺮﺳﻠﺔ .و ﻗﺪ ﺗﻜﻮن ھﻨﺎك أﻛﺜﺮ
ﻣﻦ ﻗﯿﻤﺔ ﻣﺮﺳﻠﺔ ﺑﺎﺳﻢ .. name
أﺗﻤﻨﻰ أن أﻛﻮن ﻗﺪ وﻓﻘﺖ ﻓﻲ ھﺬا اﻟﺸﺮح اﻟﻤﺘﻮاﺿﻊ ﻟﮫﺬا اﻟﺪرس ..و ﺷﻜﺮا ﻟﻤﺘﺎﺑﻌﺘﻜﻢ ھﺬه اﻟﺪروس ..و ﻻ ﺗﺒﺨﻠﻮا ﻋﻠﯿﻨﺎ ﺑﺎﻷراءو
اﻷﻓﻜﺎر ﻓﺎﻟﻤﻮﻗﻊ ﻣﺼﻤﻢ ﻣﻦ أﺟﻠﻜﻢ و ﻛﻠﻤﺎ زاد رﻗﯿﺎ و وﺿﻮﺣﺎ و ﻋﻤﺖ اﻟﻔﺎﺋﺪة ..و ﻻ ﺗﻨﺴﻮا ورﺷﺔ اﻟﻌﻤﻞ ..
ﻧﺘﻌﺮف ﻓﻲ ھﺬا اﻟﺪرس ﻋﻠﻰ ﻃﺮﻳﻘﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و ﺗﻌﺮﻳﻒ ﻣﺴﺎرھﺎ و ﻃﺮق ﻟﻌﺮ ﺿﺎﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﺑﺎﻟﻘﺎﻋﺪة
ﺛﻢ ﻧﺘﻌﺮض ﻟﻄﺮق ﺗﺤﺴﯿﻨﯿﺔ ﻓﻲ ﻋﺮض اﻟﺒﯿﺎﻧﺎت و ﻓﻲ اﻟﺪرس اﻟﻘﺎدم ﺳﺄﻗﻮم ﺑﺸﺮح ﻋﻤﻠﯿﺎت اﻹدﺧﺎل و اﻟﺤﺬف و اﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت و ﻟﻨﺒﺪأ درﺳﻨﺎ ﺑﺸﺮح ﻣﻘﺪﻣﺔ ﻋﻦ اﻟﻤﻮﺿﻮع :
ﺗﻌﺮﻓﻨﺎ ﻣﻦ ﺧﻼل اﻟﺪروس اﻟﺴﺎﺑﻘﺔ ﻛﯿﻔﯿﺔ ﺗﻌﺎﻣﻞ اﻟﺼﻔﺤﺎت اﻟﻨﺸﻄﺔ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻧﺎﺣﯿﺔ رﻳﺎﺿﯿﺔ أو ﻣﻨﻄﻘﯿﺔ ..ﻟﻜﻦ ﻣﻦ ﻣﻤﯿﺰات
ﺗﻜﻨﻮﻟﻮﺟﯿﺎ اﻟﺼﻔﺤﺎت اﻟﻨﺸﻄﺔ ﻗﺪرﺗﮫﺎ ﻋﻠﻰ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻋﻦ ﻃﺮﻳﻖ ﻛﺎﺋﻦ ADOأو ActiveX Data Objectو
اﻟﺬي ﻃﻮرﺗﻪ ﺷﺮﻛﺔ ﻣﯿﻜﺮوﺳﻮﻓﺖ و اﻟﺬي ﻳﻌﯿﻦ ﻓﻲ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﻳﻖ OLE-DBو ﺗﻘﻨﯿﺔ ODBCﻣﻤﺎ ﻳﺘﯿﺢ ﻟﻨﺎ اﻟﺘﻌﺎﻣﻞ
ﻣﻊ أﻧﻤﺎط ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺜﻞ أوراﻛﻞ و SQL Serverو اﻟﻌﺪﻳﺪ اﻟﻌﺪﻳﺪ و اﻟﺘﻲ ﺳﺄﻛﺘﻔﻲ ھﻨﺎ ﺑﺸﺮح ﻃﺮﻳﻘﺔ اﻟﺘﻮﺻﯿﻞ ﻣﻊ
ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻦ ﻧﻮع أﻛﺴﯿﺲ .
ﻳﻌﺘﺒﺮ اﻟﻜﺎﺋﻦ ADOأﺳﺎس ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و ھﻮ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺛﻼث أﺷﯿﺎء و ھﻲ connectionو recordsetو
. commandﻃﺒﻌﺎ ال connectionﻣﺴﺆوﻟﺔ ﻋﻦ إﺟﺮاء اﻹﺗﺼﺎل ﺑﺎﻟﻤﺰود Providerﻣﺜﻞ اﻷﻛﺴﯿﺲ ،أﻣﺎ ال recordsetﻓﮫﻲ ﻣﺠﻤﻮﻋﺔ
ﺣﻘﻮل ﻧﺴﺘﻄﯿﻊ اﻟﺘﺤﻜﻢ ﺑﮫﺎ ﺣﺴﺐ اﻟﺤﺎﺟﺔ و ھﻲ ﺗﻨﺘﺞ ﻧﺘﯿﺠﺔ اﺳﺘﻌﻼم ﻣﻌﯿﻦ ،و أﺧﯿﺮا اﻷﻣﺮ commandو اﻟﺬي ھﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻮع
اﻟﺤﺪث اﻟﻤﺮﺗﺒﻂ ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﺗﻌﺪﻳﻞ و ﻋﻤﻠﯿﺎت و ﻏﯿﺮھﺎ ..
ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺄﺳﺮد ﻣﺜﺎﻻ ﺑﺴﯿﻄﺎ ﻳﻌﺮض ﺑﯿﺎﻧﺎت ﺟﻤﯿﻊ اﻟﻄﻠﺒﺔ اﻟﻤﺴﺠﻠﯿﻦ ﻣﺜﻼ ﻓﻲ ﻣﺪرﺳﺔ ،ﻟﻜﻦ أود أن ﻧﻔﺮض أن
ھﻨﺎك ﺟﺪوﻻ ﻟﻠﻄﻠﺒﺔ ﺑﻪ ﺣﻘﻞ ﻷﺳﻤﺎء اﻟﻄﻠﺒﺔ و ﺣﻘﻞ ﻷرﻗﺎم ﺟﻠﻮﺳﮫﻢ و ﺣﻘﻞ ﻟﻠﺼﻒ ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ اﻟﺘﺎﻟﻲ studentNameو studentNo
و : class
><%@codePage=1256%
><html
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
" sql="Select * from students_table
)"Set rs=CreateObject("ADODB.recordset
rs.open sql, cn, 3 , 3
rs.MoveFirst
while not rs.eof
">response.write rs("studentName") & "<br
rs.moveNext
wend
>%
><head
><title></title
></head
><body
></body
></html
ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ رأﻳﻨﺎ ﻛﯿﻒ ﺗﻢ ﺗﻌﺮﻳﻒ ﻛﺎﺋﻦ ﻟﻺﺗﺼﺎل ﺑﺎﻟﺨﺎدم و ھﻮ cnﺛﻢ ﻗﻤﻨﺎ ﺑﺘﺤﺪﻳﺪ ﻧﻮع ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺘﺼﻠﺔ ﻣﻌﻪ و ھﻲ
ﻣﻦ ﻧﻮع أﻛﺴﯿﺲ ﺛﻢ ﺣﺪدﻧﺎ ﻣﺴﺎرھﺎ ﻣﻊ اﻟﺠﺰء ،، Server.MapPathﺑﻌﺪ ذﻟﻚ أﻧﺸﺄﻧﺎ اﺳﺘﻌﻼﻣﺎ ﻳﻘﻮم ﺑﺎﺧﺘﯿﺎر ﻛﻞ اﻟﺤﻘﻮل ﻣﻦ اﻟﺠﺪول
، students_tableﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ ﺳﻠﺴﻠﺔ ﺳﺠﻼت اﺳﻨﺪﻧﺎ ﻟﮫﺎ اﻹﺳﻢ rsو ﺟﻌﻠﻨﺎھﺎ ﻣﺮﺗﺒﻄﺔ ﺑﺎﻹﺗﺼﺎل cnو اﻻﺳﺘﻌﻼم sqlأﻣﺎ
اﻟﻤﺘﻐﯿﺮﻳﻦ 3و 3ﻓﮫﻤﺎ ﻳﻘﻮﻣﺎن ﺑﻌﻤﻠﯿﺔ اﻹﻏﻼق lockﻟﻠﺠﺪول و ھﺬه ﺳﺄﺿﻌﮫﺎ ﻓﻲ ﻣﻠﺤﻖ ﻟﻠﺪروس ..ﺛﻢ ﻗﻤﻨﺎ ﺑﻌﺪ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام
rs.moveFirstﻟﻺﻧﺘﻘﺎل ﺑﻤﺆﺷﺮ اﻟﺴﺠﻼت rsإﻟﻰ أول ﺳﺠﻞ ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ اﻟﺪوارة ﻧﻔﺴﮫﺎ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و ﻓﻲ
ﻛﻞ ﻣﺮة ﺗﻘﻮم اﻟﺪوارة ﺑﻄﺒﺎﻋﺔ اﺳﻢ اﻟﻄﺎﻟﺐ و ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻷﻣﺮ response.writeو اﻟﺬي ﻳﺄﺧﺬ اﻟﻘﯿﻤﺔ studentNameﻣﻦ اﻟﺴﺠﻞ rs
،ﺛﻢ ﺗﻘﻮم ﺑﺎﻹﻧﺘﻘﺎل ﻣﺴﺎﻓﺔ ﺳﺠﻞ ﻋﻦ ﻃﺮﻳﻖ . rs.moveNxtو ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﻤﺎ ﺳﺘﻼﺣﻈﻮن أﻧﻪ ﺗﻤﺖ ﻛﺘﺎﺑﺔ اﺳﻢ ﻛﻞ ﻃﺎﻟﺐ ﻋﻠﻰ ﺳﻄﺮ
ﻣﻨﻔﺮد ﻧﺘﯿﺠﺔ اﺳﺘﺨﺪام "> "< brو ﻳﻤﻜﻦ اﻹﺳﺘﻐﻨﺎء ﻋﻨﮫﺎ ﺑﺎﺳﺘﺨﺪام . vbCrLf
.. :ﻟﻜﻦ ھﻨﺎك ﻃﺮق أﺧﺮى ﻟﺘﺤﺴﯿﻦ ﻣﻨﻈﺮ اﻟﻤﺨﺮﺟﺎت ﻛﺠﻌﻠﮫﺎ ﺗﻈﮫﺮ ﻓﻲ ﺟﺪول ..أﻧﻈﺮ ھﺬه اﻟﻄﺮﻳﻘﺔ
><%@codepage=1256%
>"<html dir="rtl
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
Server.MapPath("/as4web/database.mdb"))
و ھﻜﺬا ﻧﻜﻮن اﻧﺘﮫﯿﻨﺎ ﻣﻦ ھﺬا اﻟﺪرس اﻟﻤﮫﻢ ﻟﻠﻐﺎﻳﺔ ﻋﻤﻠﯿﺎ و اﻟﺬي ﻳﻤﻜﻨﻨﺎ ﻣﻦ اﻟﺪﺧﻮل ﻓﻲ ﻏﻤﺎر اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻲ
.. ﻛﯿﻒ ﺳﯿﺘﻢ إدﺧﺎل اﻟﺒﯿﺎﻧﺎت ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻌﺪﻳﻞ و اﻟﺤﺬفASP ﺳﻨﺮى ﻓﻲ اﻟﺪرس اﻟﻘﺎدم و اﻟﺬي ﻳﻌﺪ ﻣﻦ أھﻢ دروس ال
ﻓﻲ ھﺬا اﻟﺪرس ﺳﺄﻗﻮم ﺑﺸﺮح ﻛﯿﻔﯿﺔ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﻪ ﻓﮫﻲ ﻧﻘﻄﺔ أﺳﺎﺳﯿﺔ ﻟﺒﺪأ اﻟﻌﻤﻞ و ﻟﻠﺘﺄﻛﺪ ﻣﻦ اﻟﺼﻔﺤﺎت
اﻟﺘﻲ ﻛﺘﺒﻨﺎھﺎ و إﺟﺮاء اﻟﺘﻌﺪﻳﻼت ﻋﻠﯿﮫﺎ ﺣﺴﺐ ﻣﺎ ﺗﻘﺘﻀﯿﻪ ﺣﺎﺟﺘﻨﺎ و ﻟﻨﺒﺪأ ذﻟﻚ ..
ﻓﻲ اﻟﺒﺪاﻳﺔ ﻧﺬھﺐ ﻟﻠﻤﺴﺘﻜﺸﻒ أو My Computerو ﻣﻨﻪ ﻧﺨﺘﺎر .. Control Panelﺳﺘﻈﺮ ﻋﺪة ﺧﯿﺎرات اﺧﺘﺮ ﻣﻨﮫﺎ إﺿﺎﻓﺔ و إزاﻟﺔ
اﻟﺒﺮاﻣﺞ ..ﺳﺘﻈﮫﺮ ﻟﻚ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﯿﺔ و اﻟﺘﻲ ﺑﮫﺎ ﻋﺪة اﺧﺘﯿﺎرات ﻣﻌﻠﻤﺔ و ﻏﯿﺮ ھﺎ ﻻ ﺳﺘﺠﺪ ﻣﻦ ﺑﯿﻨﮫﺎ Internet Information Services
IISﻗﻢ ﺑﺎﺧﺘﯿﺎره ﺛﻢ اﺧﺘﺮ اﻟﺘﺎﻟﻲ،،ﺳﯿﻄﻠﺐ ﻣﻨﻚ إﺳﻄﻮاﻧﺔ اﻟﻮﻳﻨﺪوز XPﻟﯿﺘﻢ ﺗﺜﺒﯿﺖ اﻟﻤﻜﻮﻧﺎت componentsﻋﻠﻰ ﺟﮫﺎزك ..
ﺳﺘﻈﮫﺮ ﻟﻚ ھﺬه اﻟﺸﺎﺷﺔ ،،و ﻣﻨﮫﺎ ﺗﻘﻮم ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ال : Internet Information Services
ﺑﻌﺪ ﺗﺸﻐﯿﻞ ال IISﺳﺘﻈﮫﺮ ﻟﻚ ھﺬه اﻟﺸﺎﺷﺔ و اﻟﺘﻲ ﺗﺮى ﻓﯿﮫﺎ اﺳﻢ اﻟﻜﻤﺒﯿﻮﺗﺮ و ھﻮ FARESھﻨﺎ ..و ھﺬه اﻟﻨﺎﻓﺬة ﻣﺜﻞ
اﻟﻤﺴﺘﻜﺸﻒ ﺣﯿﺚ أن اﻟﺠﮫﺔ اﻟﯿﻤﯿﻦ ﺗﻈﮫﺮ اﻟﺪﻟﯿﻞ اﻟﻔﺮﻋﻲ ﻟﻤﺎ ﺗﺨﺘﺎره ﻣﻦ اﻟﯿﻤﯿﻦ ،،ﻃﺒﻌﺎ ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﺳﻢ اﻟﻜﻤﺒﯿﻮﺗﺮ ﻣﺮﺗﯿﻦ ..
ﺳﺘﺮى دﻟﯿﻼ ﻓﺮﻋﯿﺎ ھﻮ Web Sitesاﻧﻘﺮ ﻋﻠﯿﻪ ﻣﺮﺗﯿﻦ ﺑﺎﻟﻔﺄرة ﺳﺘﺠﺪ أﻧﻪ ﻗﺪ ﻇﮫﺮ ﻟﻚ .. Default Web Sitesو ﻃﺒﻌﺎ ھﺆﻻء
اﻟﻤﻮاﻗﻊ اﻟﺘﻲ ﺗﻜﻮن ﻓﻲ اﻟﺪﻟﯿﻞ اﻟﻔﺮﻋﻲ ﻟﻞ Default Web Sitesﻟﻢ ﺗﺄت ﻣﻦ ﻓﺮاغ و إﻧﻤﺎ ﻳﺠﺒﺄن ﺗﻀﻊ ﺟﻤﯿﻊ أﻋﻤﺎﻟﻚ اﻟﺘﻲ ﺗﻮد ﺗﺠﺮﺑﺘﮫﺎ ﻋﻦ
ﻃﺮﻳﻖ اﻟﺴﯿﺮﻓﺮ ﻓﻲ ﻣﺤﺮك اﻷﻗﺮاص اﻟﺼﻠﺒﺔ C:/ﺛﻢ ﺗﺨﺘﺎر ﻣﻨﻪ اﻟﻤﺠﻠﺪ Inetpubﺛﻢ ﺗﺨﺘﺎر اﻟﻤﺠﻠﺪ wwwrootو اﻟﺬي ﻳﻤﺜﻞ دﻟﯿﻞ
اﻟﺴﯿﺮﻓﺮ و ﺑﺎﻟﺘﺎﻟﻲ ﺗﻈﮫﺮ ﻛﻞ اﻟﻤﺠﻠﺪات ﻟﻠﻤﻮاﻗﻊ اﻟﺘﻲ ﺗﺼﻤﻤﮫﺎ ﺑﻪ و ﻋﻦ اﺧﺘﯿﺎر أي ﻣﺠﻠﺪ أو ﻣﻮﻗﻊ ﻣﻦ ﺟﮫﺔ اﻟﯿﻤﯿﻦ ﺳﯿﻔﺘﺢ ﻟﻚ اﻟﻤﺠﻠﺪ
ﻛﺄﻧﻚ ﻓﻲ اﻟﻤﺴﺘﻜﺸﻒ ﺗﻤﺎﻣﺎ ...
ﺛﻢ ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر اﻟﻤﻠﻒ اﻟﺬي ﺗﻮد ﺗﺸﻐﯿﻠﻪ ﺑﻌﺪﻣﺎ ﺣﻔﻈﺘﻪ ﻋﻠﻰ ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺬي اﺳﺘﺨﺪﻣﺘﻪ و ذﻟﻚ ﻛﻤﺎ ھﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺸﻜﻞ
اﻟﺘﺎﻟﻲ:
و ھﻨﺎك ﻃﺮﻳﻘﺔ أﺳﺮع ﻟﺘﺸﻐﯿﻞ اﻟﺼﻔﺤﺎت ﺑﻌﺪ ﺗﺜﺒﯿﺖ اﻟﺴﯿﺮﻓﺮ IISو ھﻲ أﻧﻚ ﺑﻌﺪﻣﺎ ﺗﻘﻮم ﺑﻨﺴﺦ اﻟﻤﺠﻠﺪات إﻟﻰ اﻟﺪﻟﯿﻞ WWWroot
ﻗﻢ ﺑﻔﺘﺢ اﻟﻤﺴﺘﻜﺸﻒ و ﺿﻊ ﻓﻲ ﺷﺮﻳﻂ اﻟﻌﻨﻮان ﺟﻤﻠﺔ http://localhostو ﺑﻌﺪھﺎ ﺗﻜﺘﺐ اﺳﻢ اﻟﻤﺠﻠﺪ و اﻟﻤﻠﻒ ﻟﯿﺘﻢ ﺗﺸﻐﯿﻠﻪ ﻛﺎﻟﺘﺎﻟﻲ :
http://localhost/as4web/default.asp
و ھﻜﺬا ﻧﻜﻮن ﻗﺪ اﻧﺘﮫﯿﻨﺎ ﻣﻦ ھﺬا اﻟﺪرس ..ﻟﻨﻨﺘﻘﻞ ﻟﻠﺘﺎﻟﻲ ﻟﻨﺒﺪأ اﻟﻌﻤﻞ ..
ﻣﺮﺣﺒﺎ ﺑﻜﻢ ﻓﻲ دروس ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ و اﻟﺘﻲ ﺗﻌﺪ ﻣﻦ أھﻢ اﻟﺘﻄﺒﯿﻘﺎت اﻟﺸﺒﻜﯿﺔ اﻟﻤﺬھﻠﺔ اﻟﻨﺘﺎﺋﺞ و اﻟﻤﺘﻔﺎﻋﻠﺔ
ﻣﻊ ﻣﺴﺘﺨﺪﻣﻲ اﻟﺸﺒﻜﺔ اﻟﻌﺎﻟﻤﯿﺔ ..و ﺗﻌﺘﺒﺮ ھﺬه اﻟﺘﻘﻨﯿﺔ اﻟﺘﻲ أﻧﺘﺠﺘﮫﺎ ﺷﺮﻛﺔ ﻣﯿﻜﺮوﺳﻮﻓﺖ اﻟﻌﻤﻼﻗﺔ ﺧﻠﯿﻂ ﻣﻦ أوﺳﻤﺔ HTMLو ﻟﻐﺎت
اﻟﺴﻜﺮﻳﺒﺖ و ﻋﻨﺎﺻﺮ ActiveXﻟﺘﻨﺘﺞ ﺻﻔﺤﺔ دﻳﻨﺎﻣﯿﻜﯿﺔ و ھﻲ ﺗﺨﺘﻠﻒ ﻋﻦ ال HTMLﻓﻲ أﻧﮫﺎ ﺗﺴﺘﺨﺪم Server-Side Scriptsاﻟﺘﻲ ﺗﻨﻔﺬ
ﻛﻤﺨﻄﻮﻃﺎت ﻋﻠﻰ اﻟﺴﯿﺮﻓﺮ ..
ﻟﻜﻦ ﻣﺎ ﻓﺎﺋﺪﺗﮫﺎ أو أﻳﻦ ﻳﻤﻜﻦ أن ﻧﺴﺘﻐﻠﮫﺎ ﻓﻲ ﻣﻮاﻗﻌﻨﺎ ؟؟ ﻃﺒﻌﺎ ھﻨﺎك اﻟﻜﺜﯿﺮ ﻣﻦ اﻷﻏﺮاض اﻟﺘﻲ ﺗﻠﺒﯿﮫﺎ ھﺬه اﻟﺘﻜﻨﻮﻟﻮﺟﯿﺎ ﻣﺜﻞ
ﻛﺘﺎﺑﺔ اﻟﺘﺎرﻳﺦ و اﻟﯿﻮم و ﻏﯿﺮھﺎ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺑﻄﺮق ﻋﺪة ..ﻛﻤﺎ ﻳﻤﻜﻦ ﻋﻤﻞ ﺣﻘﻮل ﻟﻠﻨﻤﺎذج Formsﻳﻘﻮم اﻟﻤﺴﺘﺨﺪم أو اﻟﺰاﺋﺮ ﺑﺘﻌﺒﺌﺘﮫﺎ
ﻛﯿﻔﻤﺎ ﻧﺮﻏﺐ ..و ﻋﻤﻞ ﻣﺎ ﻧﺮﻳﺪ ﺑﺎﻟﻤﻌﻠﻮﻣﺎت ﻛﻨﺴﺨﮫﺎ ﻓﻲ ﻣﻠﻒ أو ﻗﺎﻋﺪة ﻟﻠﺒﯿﺎﻧﺎت ..ﻛﻤﺎ ﻳﻤﻜﻨﻨﺎ ارﺳﺎل رﺳﺎﺋﻞ ﺑﺮﻳﺪﻳﺔ و ﻏﯿﺮھﺎ ﻣﻦ
اﻟﺨﺪﻣﺎت ..ھﻞ رأﻳﺖ ﻣﻮﻗﻌﺎ ﻻرﺳﺎل اﻟﻨﻐﻤﺎت ﻟﻠﺠﻮال ؟؟ ﻛﯿﻒ ﺗﺘﻮﻗﻊ أن ﻳﻜﻮن ﻣﺼﻤﻤﺎ ؟؟!! اﻧﻈﺮ أﻏﻠﺐ اﻟﻤﻮاﻗﻊ اﻟﺘﻘﻨﯿﺔ إﻟﻰ اﻟﻮﺻﻼت
اﻟﻤﻮﺟﻮدة ﺑﺎﺧﺮھﺎ ..ﻣﺎذا ﺗﺮى اﻣﺘﺪاد اﻟﻤﻠﻔﺎت ؟؟
و ﻣﻦ أھﻢ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﻧﺠﻨﯿﮫﺎ ﻣﻦ ﺗﻘﻨﯿﺔ ال ASPھﻲ اﻟﺴﺮﻳﺔ ﻓﻲ ﻧﻘﻞ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫﺎ دون ﺗﺴﺮﺑﮫﺎ و ذﻟﻚ ﺷﻲء
ﻣﺮﻏﻮب ﻓﻲ ﻋﺎﻟﻢ اﻻﻧﺘﺮﻧﺖ ﺣﯿﺚ أﻧﻚ ﻟﻮ ﻻﺣﻈﺖ ﺻﻔﺤﺔ ﺑﻄﺮﻳﻘﺔ ال HTMLﻓﻤﻦ اﻟﻤﻨﻄﻘﻲ أﻧﻚ إذا رأﻳﺖ أﻧﮫﺎ ﻃﻠﺒﺖ ﻛﻠﻤﺔ ﻟﻠﻤﺮور ﻓﺈﻧﻚ
ﺳﺘﻌﺮف أﻧﮫﺎ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ أو اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و ﻟﻮ ﺿﻐﻂ ﺑﺎﻟﺰر اﻟﯿﻤﯿﻦ ﻋﻠﻰ اﻟﺼﻔﺤﺔ و اﺧﺘﺮت ﻋﺮض اﻟﻤﺼﺪر ﻟﻮﺟﺪت
ﻛﻮد ﻛﻠﻤﺔ اﻟﻤﺮور ﻛﻤﺎ ھﻮ ..و ﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻨﻚ ﻣﻌﺮﻓﺔ ﻛﻠﻤﺔ اﻟﻤﺮور و اﻟﺘﺴﻠﻞ ﺑﺒﺴﺎﻃﺔ دون ﻣﻌﺮﻓﺘﻚ ﺣﺘﻰ ﺑﻠﻐﺔ اﻟﺴﻜﺮﻳﺒﺖ ..ﻟﻜﻦ اﻻن
ﻳﻤﻜﻨﻚ ﺣﻔﻆ ﻛﻠﻤﺎت اﻟﻤﺮور ﻓﻲ ﻗﺎﻋﺪة ﻟﻠﺒﯿﺎﻧﺎت أو ﻏﯿﺮھﺎ ﻣﻦ اﻟﻤﻠﻔﺎت و ﺑﺎﻟﺘﺎﻟﻲ ﻟﻦ ﻳﺴﺘﻄﯿﻊ أﺣﺪ ﻣﻌﺮﻓﺔ أي ﻣﻌﻠﻮﻣﺔ و ﻟﻦ ﻳﺘﺴﻠﻞ أﺣﺪ
إﻟﻰ ﻣﻮﻗﻌﻚ و ﻣﻌﻠﻮﻣﺎﺗﻚ ..
ﻃﺒﻌﺎ اﻟﻤﻄﻠﻮب ﻣﻨﻚ ﻟﺒﺪء اﻟﻌﻤﻞ ﻓﻲ ال ASPﻣﻌﺮﻓﺔ ﺑﻠﻐﺔ ﻟﻠﺴﻜﺮﻳﺒﺖ ﻣﺜﻞ اﻟﺠﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ أو اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و أﻧﺎ ﻣﻦ وﺟﮫﺔ
ﻧﻈﺮي أن اﻷﺧﯿﺮة أﻓﻀﻞ ﻟﻚ ﻷﻧﮫﺎ ﺳﮫﻠﺔ ﻧﻮﻋﺎ ﻣﺎ و ﻗﺮﻳﺒﺔ أﻳﻀﺎ ﻣﻦ اﻟﻔﯿﺠﻮال ﺑﯿﺴﻚ و ﻟﻦ ﺗﺘﻌﺐ ﻛﺜﯿﺮا ﻓﻲ ﺗﻌﻠﻤﮫﺎ ..و ﻃﺒﻌﺎ أرﻓﻘﺖ ﺑﺎﻗﺔ
ﻣﻦ اﻟﺪروس ﻟﮫﺎ ﻓﻲ ھﺬا اﻟﻤﻮﻗﻊ ﻳﻤﻜﻨﻚ اﻹﻃﻼع ﻋﻠﯿﮫﺎ ..ﻛﻤﺎ ﻳﺠﺐ أن ﻳﻜﻮن ﻋﻨﺪك ﺑﺮﻧﺎﻣﺞ ﻣﺤﺮر ﻟﻠﻨﺼﻮص ﻣﺜﻞ FrontPageأو Visual
InterDevأو ﻏﯿﺮھﺎ ﻣﻤﺎ ﻳﻨﺎﺳﺒﻚ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﻜﻮد ..ﻛﻤﺎ أﻧﻚ ﺗﺤﺘﺎج ﻷن ﻳﻜﻮن ﺟﮫﺎزك ﻓﻲ ﻣﺤﻞ ﺧﺎدم أو ﺳﯿﺮﻓﺮ و ذﻟﻚ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ ال
Personal Web Serverو اﻟﺬي ﻳﻜﻮن ﻣﻊ ﻧﺴﺦ اﻟﻮﻳﻨﺪوز ﻣﻦ ﻧﻮع Windows 9Xﻣﺜﻞ ﻧﺴﺨﺔ 95و 98و MEأﻣﺎ Windows NTو ﻣﺎ ﺗﻼه
و ﺣﺘﻰ ال Windows Xpﻳﺤﺘﺎج ﻟﺘﺜﺒﯿﺖ Internet Information Services IISو اﻟﺬي ﻳﻜﻮن ﻣﻮﺟﻮدا ﻣﻊ إﺳﻄﻮاﻧﺎت اﻟﻮﻳﻨﺪوز ..و
ﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻨﻨﺎ ﻣﻦ ﺗﻨﻔﯿﺬ ﻣﻠﻔﺎت ال ASPﻋﻠﻰ اﻟﺠﮫﺎز دون اﻟﺤﺎﺟﺔ ﻟﺘﺤﻤﯿﻠﮫﺎ ﻋﻠﻰ ﻣﻮﻗﻊ ﻳﺪﻋﻢ ال ASPو ﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻠﻒ وﻗﺘﺎ و ﻣﺎﻻ ..و
ﺳﻨﺘﻌﺮض ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺘﻔﺎﺻﯿﻞ ﻓﻲ اﻟﺪرس اﻟﺘﺎﻟﻲ ﻟﻜﯿﻔﯿﺔ ﺗﺮﻛﯿﺐ اﻟﺴﯿﺮﻓﺮ و ﺗﺸﻐﯿﻠﻪ ..
ﻃﺒﻌﺎ ﺑﺪا ﻣﻦ اﻟﻄﺒﯿﻌﻲ أن اﻣﺘﺪاد ﻣﻠﻔﺎت ال ASPﺳﯿﻜﻮن aspو ﻟﯿﺲ .. htmو ھﺬا ﻣﺜﺎل ﺑﺴﯿﻂ ﻟﻠﻐﺎﻳﺔ ﻳﻮﺿﺢ ﻃﺮﻳﻘﺔ ﻛﺘﺎﺑﺔ
اﻟﻤﺨﻄﻮط ﺑﺘﻘﻨﯿﺔ أو ﺗﻜﻨﻮﻟﻮﺟﯿﺎ : ASP
><html
><head
><title>ASP</title
></head
><body
<%
"ﻣﺮﺣﺒﺎ ﻓﻲ أول ﺗﺠﺮﺑﺔ ﻟﺼﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ" response.write
>%
></body
></html
ﻃﺒﻌﺎ ﻧﺤﻦ اﺳﺘﺨﺪﻣﻨﺎ ﻛﻮد VbScriptﻟﻜﺘﺎﺑﺔ اﻟﺠﻤﻠﺔ و ذﻟﻚ ﻃﺒﻌﺎ ﺑﯿﻦ إﺷﺎرﺗﻲ > <%%و اﻟﻼﺗﻲ ﻳﻔﺪن اﻹﻋﻼن ﻋﻦ ﺑﺪأ ﻛﺘﺎﺑﺔ ﻛﻮد ال
ASPو إﻧﮫﺎﺋﻪ و ﺳﻨﺘﻌﺮف إن ﺷﺎء اﷲ ﻓﻲ اﻟﺪروس اﻟﻘﺎدﻣﺔ ﻋﻠﻰ اﻟﻤﺰﻳﺪ ..أﻣﺎ اﻻن ﻓﻨﺤﻦ ﺑﺼﺪد ﻣﻘﺪﻣﺔ ﺗﻌﺮﻳﻔﯿﺔ ﻋﻦ ھﺬه اﻟﺘﻘﻨﯿﺔ .
ﻧﺘﻌﺮف ﻓﻲ ھﺬا اﻟﺪرس ﻋﻠﻰ أﺳﺎﺳﯿﺎت ﻻ ﺑﺪ ﻣﻦ اﻹﺣﺎﻃﺔ ﺑﮫﺎ ﻛﻲ ﻧﺴﺘﻤﺮ ﻋﻠﻰ ﻣﺎ ﻳﺮام ﻓﻲ ﺑﺎﻗﻲ دروﺳﻨﺎ ..
ﻓﻲ ﺑﺪاﻳﺔ ھﺬا اﻟﺪرس ﺳﺄﺳﺮد ﻛﯿﻒ ﻳﺘﻢ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻮﺟﻮدة ﻋﻠﻰ اﻟﺨﺎدم ﻟﺒﯿﺎن ﻧﻘﻄﺔ ﻣﮫﻤﺔ ﺟﺪا ﺗﺴﺘﺨﺪم ﺑﻜﺜﺮة
ﻷﻏﺮاض ﻋﺪﻳﺪة أﺛﻨﺎء ﺗﺼﻤﯿﻢ ﺻﻔﺤﺎت اﻟﺨﺎدم اﻟﻨﺸﻄﺔ ..و إﻟﯿﻜﻢ ھﺬا اﻟﻜﻮد :
><%@codePage=1256%
><html
<%
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
>%
><head
><title></title
></head
><body
></body
></html
ﻃﺒﻌﺎ ﻛﻤﺎ وﺿﺤﺖ ﺳﺎﺑﻘﺎ أن أﻛﻮاد ال ASPﺗﻀﻊ ﺑﯿﻦ > <%%و ﻧﺤﻦ ﻗﺪ ﻋﺮﻓﻨﺎ ﻛﺎﺋﻦ ﻟﻺﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺳﺄﻗﻮم ﺑﺸﺮﺣﺔ
ﻻﺣﻘﺎ ﻓﻲ دروس ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻟﻜﻦ اﻟﻘﺼﺪ ﻟﻮ ﻛﺎﻧﺖ ﺑﻨﯿﺔ ﻣﻮﻗﻌﻚ ﻛﺎﻣﻠﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت إذا ﺳﺘﺤﺘﺎج ﻛﻞ ﻣﺮة ﻟﺘﻌﺮﻳﻒ ﻧﻔﺲ
اﻟﻜﺎﺋﻦ ﻟﺬا وﺟﺪت ﻃﺮﻳﻘﺔ ﻟﻮﺿﻊ ﺗﻌﺮﻳﻒ اﻟﻜﺎﺋﻦ ﻓﻲ ﻣﻠﻒ ﺛﻢ ﻳﺘﻢ اﺳﺘﺪﻋﺎءه ﻛﻞ ﻣﺮة ﻋﻦ ﻃﺮﻳﻖ ﺟﻤﻠﺔ ﺳﺄوﺿﺤﮫﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﻌﺪ
اﻟﺘﻌﺪﻳﻞ :
ﺛﻢ ﻧﻘﻮم ﺑﺤﻔﻆ اﻟﺠﻤﻠﺔ اﻟﺨﺎﺻﺔ ﺑﺘﻌﺮﻳﻒ ﻛﺎﺋﻦ اﻹﺗﺼﺎل ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت داﺧﻞ ﻣﻠﻒ ﺑﺎﻣﺘﺪاد incو ﻳﺼﺒﺢ ﻛﻤﺎ رأﻳﻨﺎ << connection.inc
و ﻃﺒﻌﺎ ﺻﯿﻐﺔ اﻟﻤﻠﻒ ﻛﺎﻟﺘﺎﻟﻲ :
<%@codePage=1256
)"Set cn = CreateObject("ADODB.Connection
_ & "=cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq
))"Server.MapPath("/as4web/database.mdb
>%
<%
FOR i=1 to 10
response.write "Number = " & i & vbCrLf
NEXT
>%
ﻃﺒﻌﺎ ھﺬه ھﻲ ﻧﻔﺲ ﻃﺮﻳﻘﺔ اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﻨﺺ و اﻟﻤﺘﻐﯿﺮات ﻟﺬا ﻳﺠﺐ اﻹﻟﻤﺎم ﺑﮫﺎ و اﻟﻨﺎﺗﺞ ﺳﯿﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ :
.mhtأﺳﺲ20%ﺑﺮﻣﺠﯿﺔ20%ﻗﺒﻞ20%ﺑﺪأ20%اﻟﻌﻤﻞmhtml:ada99: 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
أﺳﺲ ﺑﺮﻣﺠﯿﺔ ﻗﺒﻞ ﺑﺪأ اﻟﻌﻤﻞ Page 2 sur 3
اﻧﻈﺮ أﻳﻀﺎ ﻟﮫﺬه اﻟﻄﺮﻳﻘﺔ ﻣﺎ ﺳﯿﻜﻮن ﻣﺨﺮﺟﺎﺗﮫﺎ اﻟﺘﻲ ﺳﺄﺿﻌﮫﺎ ﺑﻌﺪھﺎ و أﻧﺖ ﺑﺪورك ﺗﻼﺣﻆ ﻣﺎ ﺣﺼﻞ :
<%
FOR i=1 to 10 step 2
response.write "Number = " & i & vbCrLf
NEXT
>%
أود اﻟﺘﺄﻛﯿﺪ ﻋﻠﻰ ﺿﺮورة ﻣﺮاﺟﻌﺔ دروس اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﻮﻗﻊ و اﻹھﺘﻤﺎم ﺑﮫﺎ و ﺑﺎﻟﺬات ﺑﺎﻟﺘﺪرﻳﺒﺎت اﻟﻤﮫﻤﺔ
ﻛﻲ ﻻ ﺗﻮاﺟﻪ ﺻﻌﻮﺑﺔ ﻓﻲ اﺳﺘﯿﻌﺎب أي ﺷﻲء و أﻧﺎ ﻟﻦ أﺗﺮك ﺷﯿﺌﺎ إﻻ و ﺳﺄﻗﻮم ﺑﺘﻮﺿﯿﺤﻪ ..و ھﺬه ﺻﯿﻎ ﻣﺨﺘﻠﻔﺔ ﻟﻠﺪوال و اﻟﻮﻇﺎﺋﻒ و
اﺳﺘﺪﻋﺎؤھﺎ :
<%
)Sub Add (a,b
Add=a+b
End Sub
>%
<%
)response.write Add(2,3
>%
<%
)Function calculate (a,b,operator
select case operator
"case "+
calculate= a+b
"*" case
calculate= a*b
"case "-
calculate= a-b
"case "/
calculate= a/b
End select
End Function
>%
<%
)"response.write calculate(2,3,"+
>%
.mhtأﺳﺲ20%ﺑﺮﻣﺠﯿﺔ20%ﻗﺒﻞ20%ﺑﺪأ20%اﻟﻌﻤﻞmhtml:ada99: 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
أﺳﺲ ﺑﺮﻣﺠﯿﺔ ﻗﺒﻞ ﺑﺪأ اﻟﻌﻤﻞ Page 3 sur 3
ﺳﺘﺠﺪ ﺗﻄﺎﺑﻘﺎ ﻛﺒﯿﺮا ﻓﻲ ﻃﺮﻳﻘﺔ ﻛﺘﺎﺑﺔ أﻛﻮاد ASPو VbScriptﻟﺬا ﺳﺄﻛﺮر و ﻻﺧﺮ ﻣﺮة ﻣﺪى ﺿﺮورة اﻟﻌﻮدة ﻟﺪروس اﻟﻔﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖ و
اﻹھﺘﻤﺎم أﻳﻀﺎ ﺑﺪروس اﻟﻤﺪﺧﻼت و اﻟﻄﺮق اﻟﺒﻨﺎﺋﯿﺔ ﻟﻠﻤﺨﻄﻮط ..
.mhtأﺳﺲ20%ﺑﺮﻣﺠﯿﺔ20%ﻗﺒﻞ20%ﺑﺪأ20%اﻟﻌﻤﻞmhtml:ada99: 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ASPﻛﺎﺋﻨﺎت Page 1 sur 8
ﻓﻲ ھﺬا اﻟﺪرس ﺳﻨﺘﻌﺮف ﻋﻠﻰ ﻛﺎﺋﻨﺎت ال ASPو اﻟﺘﻲ ھﻲ اﻷﺳﺎس اﻟﺘﻲ ﺗﺮﺗﻜﺰ ﻋﻠﯿﮫﺎ و ﻧﺒﺪأ ﺑﺄول ﻛﺎﺋﻦ :
اﻟﻜﺎﺋﻦ : Request
ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺘﻮﺻﯿﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻳﺮﺳﻠﮫﺎ اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﺟﮫﺎزه اﻟﻌﻤﯿﻞ clientإﻟﻰ اﻟﺨﺎدم serverﻣﻦ ﺧﻼل ﻃﻠﺐ ، HTTP
و ﺻﯿﻐﺘﺔ ﻛﺘﺎﺑﺘﮫﺎ ھﻲ ھﺬه اﻟﺼﯿﻐﺔ :
)Request[.collection |property|method](variables
و ﺳﺄﻗﻮم اﻻن ﺑﺸﺮح اﻟﺨﺼﺎﺋﺺ Property collectionsأو اﻟﻄﺮق Method collectionsﻓﻲ ھﺬا اﻟﺠﺪول :
اﻟﺸﺮح اﻟﺨﺎﺻﯿﺔ
و ھﻨﺎك ﻃﺮق ﺑﺮﻣﺠﯿﺔ Methodو ھﻲ ﻣﻤﻦ ﻳﺪﻋﻤﮫﺎ ﻛﺎﺋﻦ Requestو ھﻲ )( BinaryReadو اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻟﻠﺘﻮﺻﻞ إﻟﻰ اﻟﺒﯿﺎﻧﺎت
اﻟﺜﻨﺎﺋﯿﺔ و اﻟﺘﻲ ﺗﻨﺘﺞ ﻧﺘﯿﺠﺔ اﺳﺘﺨﺪام اﻟﻄﺮﻳﻘﺔ POSTﻓﻲ ارﺳﺎل اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﻨﻤﺎذج .
ﻣﻼﺣﻈﺔ :
ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺘﻌﺒﯿﺮ ) request(variableدون ذﻛﺮ اﻟﻤﺠﻤﻮﻋﺔ و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن اﻟﻤﺘﺼﻔﺢ ﺳﯿﺒﺤﺚ ﺗﻠﻘﺎﺋﯿﺎ ﺣﺴﺐ اﻟﺘﺮﺗﯿﺐ
اﻟﺘﺎﻟﻲ :
QueryString -1
Form -2
Cookies -3
ClientCertificate -4
ServerVariables -5
و ھﺬه ﻗﺎﺋﻤﺔ ﻣﺼﻮرة ﻣﻦ ﻛﺘﺎب ﻳﻌﺮض ﻋﻨﺎﺻﺮ ال ServerVariablesو ﻳﻤﻜﻨﻚ اﻹﻃﻼع ﻋﻠﯿﮫﺎ ﻣﻦ ھﻨﺎ ..
ASP.mhtﻛﺎﺋﻨﺎتmhtml:ada99:20% 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ﻛﺎﺋﻨﺎتASP Page 2 sur 8
mhtml:ada99:20%ﻛﺎﺋﻨﺎتASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ﻛﺎﺋﻨﺎتASP Page 3 sur 8
mhtml:ada99:20%ﻛﺎﺋﻨﺎتASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ﻛﺎﺋﻨﺎتASP Page 4 sur 8
mhtml:ada99:20%ﻛﺎﺋﻨﺎتASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ﻛﺎﺋﻨﺎتASP Page 5 sur 8
mhtml:ada99:20%ﻛﺎﺋﻨﺎتASP.mht 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ASPﻛﺎﺋﻨﺎت Page 6 sur 8
و ھﺬا ﻣﺜﺎل ﺟﺎھﺰ ﻳﻤﻜﻦ أن ﺗﺠﺮﺑﻪ ﻋﻠﻰ ﺟﮫﺎزك ﻟﺘﺘﻌﺮف ﻋﻠﻰ ﻣﻮاﺻﻔﺎت ال ServerVariablesﻋﻠﯿﻪ :
><html
><head
></head
>"<body><table border="1" cellspacing="0" cellpadding="3
><tr
><th>Key</th
><th>Value</th
اﻟﻜﺎﺋﻦ : Response
ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺈرﺳﺎل اﻟﺒﯿﺎﻧﺎت ﻟﻠﻤﺴﺘﺨﺪم و ھﻮ ﻳﺪﻋﻢ ال cookiesﻛﻤﺠﻤﻮﻋﺔ ﻛﻤﺎ ﻳﺪﻋﻢ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺨﺼﺎﺋﺺ و اﻟﻄﺮق اﻟﺘﻲ
ﺳﻨﺬﻛﺮھﺎ ﺑﻌﺪ ﻛﺘﺎﺑﺔ اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﮫﺬا اﻟﻜﺎﺋﻦ :
response.collection|property|method
اﻟﺸﺮح اﻟﻨﻮع
و ﺳﻨﺘﻌﺮف ﻣﻦ ﺧﻼل اﻷﻣﺜﻠﺔ اﻟﺘﻲ ﺳﺄﺿﻌﮫﺎ ﻓﻲ ورﺷﺔ اﻟﻌﻤﻞ و اﻟﺘﻲ ﺗﻘﻒ ﺑﻨﺎ أﻣﺎم أﺑﻮاب ﻟﻤﺸﺎﻛﻞ رﺑﻤﺎ ﻧﺘﻌﺮض ﻟﮫﺎ أﺛﻨﺎء ﺗﺼﻤﯿﻤﻨﺎ
ﻟﻔﻜﺮة و ﻧﺮى ﻛﯿﻒ ﻳﻤﻜﻨﻨﺎ اﻟﺘﻐﻠﺐ ﻋﻠﻰ ﻣﺜﻞ ھﺬه اﻟﻤﺸﺎﻛﻞ ..ﻃﺒﻌﺎ ورﺷﺔ اﻟﻌﻤﻞ ﻣﮫﻤﺔ ﺟﺪا ﺟﺪا ﺑﺎﻟﺬات ﻟﻘﺴﻢ ﺗﻜﻨﻮﻟﻮﺟﯿﺎ ﺻﻔﺤﺎت
اﻟﺨﺎدم اﻟﻨﺸﻄﺔ . ASP
اﻟﻜﺎﺋﻦ : Server
ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺄھﻢ اﻟﻌﻤﻠﯿﺎت ﻟﻨﺎ ﻛﻤﻄﻮرﻳﻦ أﻧﻈﻤﺔ ﻟﻤﺎ ﻟﻪ ﻣﻦ ﻋﻼﻗﺔ ﺑﺄﻧﻈﻤﺔ اﻟﺘﺸﻐﯿﻞ و ﻣﺼﺎدرھﺎ و ھﻮ ﻣﺼﺪر اﺗﺼﺎل
ﺑﺎﻟﻤﻜﻮﻧﺎت اﻟﺘﻲ ﻳﻜﺘﺒﮫﺎ ﻣﺒﺮﻣﺠﻮن و ﻳﺜﺒﺘﻮﻧﮫﺎ ﻋﻠﻰ اﻟﺨﺎدم و اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ ﻟﻪ ھﻲ :
Server.property|method
و اﻟﺨﺎﺻﯿﺔ اﻟﺘﻲ ﻳﺸﺘﮫﺮ ﺑﮫﺎ ھﺬا اﻟﻜﺎﺋﻦ ھﻲ ScriptTimeOutو اﻟﺘﻲ ﺗﻔﯿﺪ إﻋﻄﺎء اﻟﻤﺨﻄﻮط أو اﻟﺴﻜﺮﻳﺒﺖ ﻣﺪة زﻣﻨﯿﺔ ﻟﺘﻨﻔﯿﺬه ﻋﻠﻰ
اﻟﺨﺎدم و إﻻ اﻧﺘﮫﺖ وﻇﯿﻔﺔ ھﺬا اﻟﺴﻜﺮﻳﺒﺖ و ﺑﻄﻞ ﻋﻤﻠﻪ .أﻣﺎ اﻟﻄﺮق METHODاﻟﻤﺸﮫﻮر ﺑﮫﺎ ھﺬا اﻟﻜﺎﺋﻦ ﻓﮫﻲ ﻛﻤﺎ ﺑﺎﻟﺠﺪول :
ASP.mhtﻛﺎﺋﻨﺎتmhtml:ada99:20% 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ASPﻛﺎﺋﻨﺎت Page 7 sur 8
اﻟﺸﺮح اﻟﻄﺮﻳﻘﺔ
ﺗﻘﻮم ﺑﺘﻜﻮﻳﻦ ﻛﺎﺋﻦ ﻣﺘﻌﻠﻖ ﺑﻤﻜﻮﻧﺎت ﻣﺜﺒﺘﺔ ﻋﻠﻰ اﻟﺨﺎدم ﻣﺜﻞ ﻣﻜﻮﻧﺎت اﻹﺗﺼﺎل . CreateObject
ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺮﺑﻂ ﺑﯿﻦ ﻣﺴﺎر ﺧﺎدم ﺗﻘﺪرﻳﺮي و ﻣﺴﺎر ﻓﮫﺮس ﺣﻘﯿﻘﻲ . MapPath
اﻟﻜﺎﺋﻦ : Session
ﻳﻘﻮم ھﺬا اﻟﻜﺎﺋﻦ ﺑﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎت ﺣﻮل اﻟﻤﺴﺘﺨﺪم أﺛﻨﺎء ﺗﺠﻮﻟﻪ ﻓﻲ اﻟﻤﻮﻗﻊ و ﻳﺒﻘﻰ ھﺬا اﻟﻜﺎﺋﻦ ﻣﻮﺟﻮدا ﺧﻼل ﺗﻮاﺟﺪ اﻟﻤﺴﺘﺨﺪم ﻓﻲ
اﻟﻤﻮﻗﻊ ﺣﺘﻰ ﻳﺘﻢ إﻏﻼق اﻟﻤﺘﺼﻔﺢ أو اﺳﺘﺨﺪام إﺣﺪى اﻟﻄﺮق اﻟﺘﻲ ﺳﺄذﻛﺮھﺎ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ،،ﻟﻜﻦ أﺣﺐ أن أﻧﻮﻧﻪ ﻓﻲ أﻧﮫﺎ
ﺗﺴﺘﺨﺪم أﻳﻀﺎ ﻓﻲ ﺟﻌﻞ ﻣﺴﺘﺨﺪﻣﯿﻦ ﻓﻲ ﻣﻜﺎﻧﯿﻦ ﻣﺨﺘﻠﻔﯿﻦ أن ﻳﺴﺘﺨﺪﻣﻮا اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻧﻔﺲ اﻟﺼﻔﺤﺔ دون اﻟﺘﺪاﺧﻞ ﻓﻲ اﻟﻤﻌﻠﻮﻣﺎت و
ﻟﮫﺎ دور ﻛﺒﯿﺮ ﻓﻲ ﻧﻘﻄﺔ اﻟﺴﺮﻳﺔ ،،و ھﺬا ﺟﺪول ﻳﺒﯿﻦ اﻟﺨﺼﺎﺋﺺ و اﻟﻄﺮق ﻟﮫﺬا اﻟﻜﺎﺋﻦ :
اﻟﺸﺮح اﻟﻨﻮع
ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﺤﺪﻳﺪ ﻣﺪة زﻣﻨﯿﺔ ﺑﺎﻟﺪﻗﺎﺋﻖ ﻹﻧﮫﺎء ھﺬه اﻟﺠﻠﺴﺔ . TimeOut
اﻟﻜﺎﺋﻦ : Application
ﻳﺴﺘﺨﺪم ھﺬا اﻟﻜﺎﺋﻦ ﻓﻲ ﺗﺨﺰﻳﻦ و اﺳﺘﺮﺟﺎع اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻗﺎم ﺑﮫﺎ اﻟﻤﺘﺼﻔﺢ ﻧﺘﯿﺠﺔ ﻃﻠﺒﺎت ﻣﻦ اﻟﻤﺴﺘﺨﺪم و ذﻟﻚ ﻟﻠﻌﻮدة ﻟﮫﺎ ،و
ﻳﻤﻜﻦ اﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ 10.000ﺷﺨﺺ ﻟﮫﺬا اﻟﻜﺎﺋﻦ ﻋﻠﻰ ﻧﻔﺲ ال Rootﻟﻠﻤﻮﻗﻊ .و ﺻﯿﻐﺘﻪ اﻟﻌﺎﻣﺔ :
Application.method
اﻟﺸﺮح اﻟﻨﻮع
ASP.mhtﻛﺎﺋﻨﺎتmhtml:ada99:20% 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com
ASPﻛﺎﺋﻨﺎت Page 8 sur 8
ﻳﻘﻮم ﺑﻤﻨﻊ أي ﻣﺴﺘﺨﺪم اﺧﺮ ﺑﺈﺟﺮاء ﺗﻐﯿﺮات ﻋﻠﻰ اﻟﺘﻄﺒﯿﻖ . Lock
ﻳﻘﻮم ﺑﻔﻚ اﻹﻏﻼق ﻋﻦ اﻟﺘﻄﺒﯿﻖ و اﻟﺴﻤﺎح ﻟﻼﺧﺮﻳﻦ ﺑﺈﺟﺮاء
UnLock
ﺗﻌﺪﻳﻼت ﻋﻠﯿﻪ .
ﺗﻘﻮم ﺑﻨﻔﺲ دور expireإﻻ اﻧﮫﺎ ﺗﺤﺪد أﻳﻀﺎ اﻟﯿﻮم و اﻟﺘﺎرﻳﺦ . ExpiresAbsolute
ﻳﻘﻮم ﺑﺈﻳﻘﺎف اﻟﺘﻄﺒﯿﻖ ﻋﻨﺪ ﺗﻮﻗﻒ ﻋﻤﻞ اﻟﺨﺎدم ﻣﻦ ﻗﺒﻞ ﻣﺪﻳﺮ
Application_OnEnd Events
اﻟﻤﻮﻗﻊ .
ﻳﺄﺧﺬ ھﺬا اﻟﺤﺪث ﻣﻜﺎﻧﻪ ﻋﻨﺪ ﺗﺸﻐﯿﻞ اﻟﺘﻄﺒﯿﻖ ﻋﻠﻰ اﻟﺨﺎدم ﻷول
Application_OnٍStart
ﻣﺮة .
و ھﻜﺬا ﻧﻜﻮن اﻧﺘﮫﯿﻨﺎ ﻣﻦ ﻛﺎﺋﻨﺎت ASPاﻟﺨﻤﺴﺔ و اﻟﺘﻲ ﻗﺪ ﺗﺘﺴﺎﺋﻞ ﻣﺎ ﻓﺎﺋﺪﺗﮫﺎ أو ﻣﺎ ھﻲ ،،أﻧﺎ أواﻓﻘﻚ اﻟﺮأي ﻟﻜﻦ ﺻﺪﻗﻨﻲ ﻋﻨﺪ ذھﺎﺑﻚ
ﻟﻮرﺷﺔ اﻟﻌﻤﻞ ﺳﺘﺠﺪ رﻣﻮزا ﻣﺒﮫﻤﺔ و ﻣﺨﺘﺼﺮة ﻟﻜﻦ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻗﺪ اﺳﺘﻮﻋﺒﺘﮫﺎ ھﻨﺎ ﻓﺈﻧﻚ ﺳﺘﺠﺪھﺎ ﻳﺴﯿﺮة و ﻣﻔﮫﻮﻣﺔ ..
ASP.mhtﻛﺎﺋﻨﺎتmhtml:ada99:20% 18-06-2005
PDF created with pdfFactory trial version www.pdffactory.com