مقدمة حول PHP


لغة PHP
ﺗﺘﻤﯿﺰ ﻟﻐﺔ PHP ﺑﺎﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﺟﻌﻠﺘﮫﺎ اﻟﺨﯿﺎر اﻷﻣﺜﻞ ﻟﻤﺒﺮﻣﺠﻲ اﻟﻮﻳﺐ ﻓﻲ اﻟﻌﺎﻟﻢ :   
اﻟﺴﮫﻮﻟﺔ   
ﺗﻌﺘﺒﺮ ﻟﻐﺔ PHP ﻣﻦ أﺳﮫﻞ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺗﻌﻠﻤﺎ، ﻓﮫﻲ ﺗﺮﻳﺤﻚ ﻣﻦ ﺟﻤﯿﻊ ﺗﻌﻘﯿﺪات إدارة اﻟﺬاﻛﺮة وﺗﻌﻘﯿﺪات
ﻣﻌﺎﻟﺠﺔ اﻟﻨﺼﻮص اﻟﻤﻮﺟﻮدة ﻓﻲ C ﻣﻦ ﺟﮫﺔ، واﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻀﻌﻒ اﻟﻤﻮﺟﻮد ﻓﻲ ﺑﯿﻨﯿﺔ وﺗﺼﻤﯿﻢ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ Perl
ﻣﻦ ﺟﮫﺔ أﺧﺮى.   
ﺗﻤﺘﻠﻚ ﻟﻐﺔ PHP ﺑﻨﯿﺔ وﻗﻮاﻋﺪا ﺛﺎﺑﺘﻪ وواﺿﺤﺔ ﺟﺪا، ﻣﻌﻈﻢ ﻗﻮاﻋﺪ اﻟﻠﻐﺔ ﻣﺄﺧﻮذة ﻣﻦ ﻛﻞ ﻣﻦ C و Java و Perl
ﻟﺼﻨﻊ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻋﺎﻟﯿﺔ اﻟﺴﮫﻮﻟﺔ واﻟﺴﻼﺳﺔ دون ﻓﻘﺪان أي ﻣﻦ اﻟﻘﻮة ﻓﻲ اﻟﻠﻐﺔ، ﻳﻔﯿﺪك ذﻟﻚ إذا ﻛﻨﺖ ﺗﻌﻠﻢ
أي ﺷﻲء ﻋﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻷﺧﺮى ﻣﺜﻞ Visual Basic أو C أو Java ﺣﯿﺚ ﺳﺘﺠﺪ داﺋﻤﺎ ﺑﺄﻧﻚ ﺗﻔﮫﻢ ﻣﻮاد
اﻟﺪورة ﺑﺴﺮﻋﺔ، وﺳﺘﻜﺘﺸﻒ ﻛﯿﻒ ﺗﻘﻮم PHP ﺑﺘﺴﮫﯿﻞ أﺻﻌﺐ اﻷﻣﻮر وإذﻻل اﻟﻌﻘﺒﺎت اﻟﺘﻲ ﺗﻮاﺟﻪ اﻟﻤﺒﺮﻣﺞ ﺣﺘﻰ
ﻳﺘﻔﺮغ ﺗﻤﺎﻣﺎ ﻟﻺﺑﺪاع ﻓﻘﻂ، ﻛﻞ ﻣﺎ ﺗﻔﻜﺮ ﺑﻪ ﺗﺴﺘﻄﯿﻊ ﺗﻨﻔﯿﺬه ﺑﻠﻐﺔ PHP.   
اﻟﺴﺮﻋﺔ   
ﻟﻐﺔ PHP ﻣﻦ اﻟﻠﻐﺎت اﻟﻤﻌﺮوﻓﺔ ﺑﺴﺮﻋﺘﮫﺎ اﻟﻌﺎﻟﯿﺔ ﻓﻲ ﺗﻨﻔﯿﺬ اﻟﺒﺮاﻣﺞ، وﺧﺎﺻﺔ ﻓﻲ اﻹﺻﺪارة اﻟﺮاﺑﻌﺔ ﻣﻦ اﻟﻤﺘﺮﺟﻢ،
ﺣﯿﺚ ﺗﻤﺖ ﻛﺘﺎﺑﺔ ﻣﺘﺮﺟﻢ PHP ﻣﻦ اﻟﺼﻔﺮ ﻟﯿﻌﻄﻲ أداءا ﻓﻲ ﻣﻨﺘﮫﻰ اﻟﺮوﻋﺔ، ﻛﻤﺎ أن ﻟﻐﺔ PHP ﻣﺼﻤﻤﺔ أﺻﻼ
ﻛﻨﻮاة ﻟﻤﺘﺮﺟﻢ، ﺑﺤﯿﺚ ﻳﻤﻜﻦ أن ﺗﻀﻊ ھﺬه اﻟﻨﻮاة ﻓﻲ ﻋﺪة ﻗﻮاﻟﺐ أو أﻏﻠﻔﺔ ﻟﺘﻌﻤﻞ ﻣﻊ اﻟﺘﻘﻨﯿﺎت اﻟﻤﺨﺘﻠﻔﺔ،
ﻓﯿﻤﻜﻨﻚ ﺗﺸﻐﯿﻞ ﻣﺘﺮﺟﻢ PHP ﻛﺒﺮﻧﺎﻣﺞ CGI ﻣﺜﻼ، وﻟﻜﻦ اﻷﻓﻀﻞ ھﻮ إﻣﻜﺎﻧﯿﺔ ﺗﺮﻛﯿﺐ ﻣﺘﺮﺟﻢ PHP ﻋﻠﻰ ﻣﺰود IIS
ﻓﻲ ﺻﻮرة وﺣﺪة إﺿﺎﻓﯿﺔ ﺗﻀﺎف إﻟﻰ اﻟﻤﺰود ﻋﻦ ﻃﺮﻳﻖ دوال ISAPI، وﺗﻮﺟﺪ ﻧﺴﺨﺔ أﺧﺮى ﻣﻨﻪ ﺗﺮﻛﺐ ﻋﻠﻰ ﻣﺰود
Apache أﻳﻀﺎ ﻓﻲ ﺻﻮرة وﺣﺪة ﺧﺎرﺟﯿﺔ، وﺗﻮﺟﺪ أﻳﻀﺎ ﻧﺴﺨﺔ ﻣﺨﺼﺼﺔ ﻟﻠﺪﻣﺞ ﻣﻊ ﺷﻔﺮة ﻣﺰود Apache ﺑﺤﯿﺚ
ﺗﺼﺒﺢ ﺟﺰءا ﻣﻦ ﺑﺮﻧﺎﻣﺞ Apache ﻧﻔﺴﻪ، وھﻲ اﻟﻄﺮﻳﻘﺔ اﻷﻛﺜﺮ اﺳﺘﺨﺪاﻣﺎ اﻵن ﻓﻲ ﻣﺰودات اﻟﻮﻳﺐ اﻟﺘﻲ ﺗﻌﻤﻞ
ﻋﻠﻰ أﻧﻈﻤﺔ UNIX وھﻲ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﻌﻄﻲ أﻓﻀﻞ أداء ﻟﻤﺘﺮﺟﻢ PHP، ﺣﯿﺚ ﻳﺼﺒﺢ اﻟﻤﺘﺮﺟﻢ ﺟﺰءا ﻣﻦ
اﻟﻤﺰود، وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈﻧﻪ ﺳﯿﻜﻮن ﻣﺤﻤﻼ ﻓﻲ اﻟﺬاﻛﺮة ﺑﺎﻧﺘﻈﺎر ﺻﻔﺤﺎت PHP ﻟﯿﻘﻮم ﺑﺘﺮﺟﻤﺘﮫﺎ وﻋﺮﺿﮫﺎ ﻟﻠﺰوار
ﻣﺒﺎﺷﺮة دون اﻟﺘﺄﺧﯿﺮ اﻹﺿﺎﻓﻲ اﻟﺬي ﺗﺘﻄﻠﺒﻪ ﺑﺮاﻣﺞ Perl/CGI ﻣﺜﻼ ﺣﯿﺚ ﻳﺠﺐ أن ﻳﺘﻢ ﺗﺸﻐﯿﻞ ﻣﺘﺮﺟﻢ Perl ﻣﻊ
ﻛﻞ زﻳﺎرة ﻟﻠﺼﻔﺤﺔ ﻟﺘﺮﺟﻤﺔ اﻟﺼﻔﺤﺔ، ﺛﻢ ﻳﺘﻢ إﻏﻼق اﻟﻤﺘﺮﺟﻢ، ﺛﻢ اﺳﺘﺪﻋﺎءه ﻣﺠﺪدا ﻋﻨﺪ اﻟﺰﻳﺎرة اﻟﺜﺎﻧﯿﺔ وھﻜﺬا،
وھﺬا ﻳﺸﻜﻞ ﻓﺎرﻗﺎ ﻛﺒﯿﺮا ﻓﻲ اﻟﻤﻮاﻗﻊ ذات اﻟﻀﻐﻂ اﻟﻌﺎﻟﻲ ﺑﺎﻟﺬات، وﻳﻜﻮن اﺳﺘﺨﺪام PHP ﺣﻼ أﻓﻀﻞ ﺑﻜﺜﯿﺮ.   
اﻟﻤﺰاﻳﺎ   
ﻳﺄﺗﻲ ﻣﺘﺮﺟﻢ PHP ﻟﻮﺣﺪه ﻣﺤﻤﻼ ﺑﻌﺪد ھﺎﺋﻞ ﻣﻦ اﻟﺪوال اﻟﺠﺎھﺰة اﻻﺳﺘﺨﺪام ﻓﻲ ﺟﻤﯿﻊ اﻟﻤﺠﺎﻻت، ﻣﻦ دوال
اﻟﻤﻌﺎﻟﺠﺔ اﻟﺮﻳﺎﺿﯿﺔ واﻟﺤﺴﺎﺑﯿﺔ إﻟﻰ دوال اﻟﻮﺻﻮل إﻟﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﻣﺰودات FTP، ﺗﻮﻓﺮ ﻟﻚ دوال PHP ﻣﺜﻼ
وﺻﻮﻻ إﻟﻰ ﻣﺰودات اﻟﺒﯿﺎﻧﺎت MySQL و PostgreSQL و MS SQL و Oracle وﻏﯿﺮھﺎ ﻣﻦ ﻣﺰودات ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت،
وھﻨﺎﻟﻚ أﻳﻀﺎ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال ﻟﻤﻌﺎﻟﺠﺔ ﻣﻠﻔﺎت XML، ودوال أﺧﺮى ﻹرﺳﺎل واﺳﺘﻘﺒﺎل اﻟﻤﻠﻔﺎت ﻋﻦ ﺑﻌﺪ
ﺑﺎﺳﺘﺨﺪام ﺑﺮوﺗﻮﻛﻮل FTP، وھﻨﺎﻟﻚ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال ﻟﻤﻌﺎﻟﺠﺔ وإﻧﺘﺎج اﻟﺼﻮر دﻳﻨﺎﻣﯿﻜﯿﺎ وﻣﻠﻔﺎت Flash
دﻳﻨﺎﻣﯿﻜﯿﺎ، ﻧﺎھﯿﻚ ﻋﻦ ﺟﻤﯿﻊ اﻟﺪوال اﻟﺨﺎﺻﺔ ﺑﻤﻌﺎﻟﺠﺔ اﻟﻨﺼﻮص واﻟﻤﺼﻔﻮﻓﺎت.   
اﻟﺘﻮاﻓﻘﯿﺔ   
ﻛﻤﺎ ﻗﻠﻨﺎ ﺳﺎﺑﻘﺎ، ﻓﻌﻠﻰ اﻟﺮﻏﻢ ﻣﻦ أن ھﻨﺎﻟﻚ اﻟﻜﺜﯿﺮ ﻣﻦ ﻧﺴﺦ PHP اﻟﺘﻲ ﻳﻌﻤﻞ ﻛﻞ ﻣﻨﮫﺎ ﻓﻲ ﺑﯿﺌﺔ ﻣﺨﺘﻠﻔﺔ، إﻻ
أﻧﮫﺎ ﺟﻤﯿﻌﺎ ﺗﺸﺘﺮك ﻓﻲ اﻟﻨﻮاة اﻷﺻﻠﯿﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﺎﻟﻤﻌﺎﻟﺠﺔ اﻟﺤﻘﯿﻘﺔ ﻟﻤﻠﻔﺎت PHP ﻟﺬا ﻓﺈن ﺟﻤﯿﻊ ﻣﺘﺮﺟﻤﺎت
PHP ﺗﺘﺼﺮف ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ ﻓﯿﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺘﻨﻔﯿﺬ اﻟﺴﻜﺮﻳﺒﺘﺎت، ﻓﺈذا ﻛﺎن اﻟﺴﻜﺮﻳﺒﺖ اﻟﺬي ﻋﻤﻠﺘﻪ ﻳﻌﻤﻞ ﻋﻠﻰﻧﻈﺎم Windows ﻣﻊ ﻣﺰود IIS ﻓﯿﺠﺐ أن ﻳﻌﻤﻞ دون اﻟﺤﺎﺟﺔ ﻷﻳﺔ ﺗﻐﯿﯿﺮات ﻋﻨﺪ ﻧﻘﻠﻪ إﻟﻰ ﻣﺰود Apache، ﺑﺎﻟﻄﺒﻊ
ﺗﻈﻞ ﺑﻌﺾ اﻷﻣﻮر اﻟﺒﺴﯿﻄﺔ ﺟﺪا اﻟﺘﻲ ﻳﻮﻓﺮھﺎ ﺑﻌﺾ اﻟﻤﺰودات دون ﻏﯿﺮھﺎ، وﻟﻜﻦ ﺟﻤﯿﻊ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﻛﺘﺒﺘﮫﺎ ﻣﻨﺬ
أن ﺑﺪأت ﺗﻌﻠﻤﻲ ﻟﻠﻐﺔ إﻟﻰ اﻵن ﺗﻌﻤﻞ ﻋﻠﻰ ﺟﻤﯿﻊ اﻟﻤﺰودات دون اﻟﺤﺎﺟﺔ ﻷي ﺗﻐﯿﯿﺮات، إﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ﻓﺈن
اﻟﺘﻐﯿﯿﺮات اﻟﺘﻲ ﺣﺪﺛﺖ ﺑﺎﻟﻠﻐﺔ اﻷﺳﺎﺳﯿﺔ ﻣﻦ اﻹﺻﺪارة اﻟﺜﺎﻟﺜﺔ إﻟﻰ اﻟﺮاﺑﻌﺔ ﻗﻠﯿﻠﺔ ﺟﺪا، وأﻏﻠﺐ اﻟﺘﻐﯿﯿﺮات ﻛﺎﻧﺖ
ﻓﻲ اﻟﺒﻨﯿﺔ اﻟﺘﺤﺘﯿﺔ ﻟﻠﻤﺘﺮﺟﻢ.   
اﻟﺤﻤﺎﻳﺔ   
ﻳﻮﻓﺮ PHP اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺰاﻳﺎ اﻟﻤﺘﻘﺪﻣﺔ، وﻟﻜﻨﻪ ﻳﻮﻓﺮ ﻟﻚ اﻟﻄﺮق اﻟﻤﻨﺎﺳﺒﺔ ﻟﻮﺿﻊ اﻟﺤﺪود ﻋﻠﻰ ھﺬه اﻟﻤﺰاﻳﺎ،
ﻓﯿﻤﻜﻨﻚ اﻟﺘﺤﻜﻢ ﺑﻌﺪد اﻹﺗﺼﺎﻻت اﻟﻤﺴﻤﻮﺣﺔ ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﺜﻼ، أو اﻟﺤﺠﻢ اﻷﻗﺼﻰ ﻟﻠﻤﻠﻔﺎت اﻟﺘﻲ ﻳﻤﻜﻦ
إرﺳﺎﻟﮫﺎ ﻋﺒﺮ اﻟﻤﺘﺼﻔﺢ، أو اﻟﺴﻤﺎح ﺑﺎﺳﺘﺨﺪام ﺑﻌﺾ اﻟﻤﯿﺰات أو إﻟﻐﺎء اﺳﺘﺨﺪاﻣﮫﺎ، ﻛﻞ ھﺬا ﻳﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﻣﻠﻒ
إﻋﺪادات PHP واﻟﺬي ﻳﺘﺤﻜﻢ ﺑﻪ ﻣﺪﻳﺮ اﻟﻤﻮﻗﻊ.   
ﻗﺎﺑﻠﯿﺔ اﻟﺘﻮﺳﻊ   
ﻳﻤﻜﻨﻚ ﺗﻮﺳﻌﺔ ﻣﺘﺮﺟﻢ PHP ﺑﺴﮫﻮﻟﺔ وإﺿﺎﻓﺔ اﻟﻤﯿﺰات اﻟﺘﻲ ﺗﺮﻳﺪھﺎ إﻟﯿﻪ ﺑﻠﻐﺔ C، وﺣﯿﺚ أن اﻟﺸﻔﺮة اﻟﺒﺮﻣﺠﯿﺔ
ﻟﻠﻤﺘﺮﺟﻢ ﻣﻔﺘﻮﺣﺔ ﻓﺈﻧﻚ ﺗﺴﺘﻄﯿﻊ ﺗﻐﯿﯿﺮ ﻣﺎ ﺗﺮﻳﺪه ﻣﺒﺎﺷﺮة ﻟﺘﺤﺼﻞ ﻋﻠﻰ اﻟﻨﺴﺨﺔ اﻟﺘﻲ ﺗﻨﺎﺳﺒﻚ ﻣﻦ اﻟﻤﺘﺮﺟﻢ،
وﻳﻤﻜﻨﻚ أﻳﻀﺎ ﻋﻤﻞ اﻟﻮﺣﺪات اﻹﺿﺎﻓﯿﺔ اﻟﺘﻲ ﺗﺮﻛﺐ ﻋﻠﻰ اﻟﻤﺘﺮﺟﻢ ﻟﺰﻳﺎدة ﻣﯿﺰاﺗﻪ واﻟﻮﻇﺎﺋﻒ اﻟﻤﺒﯿﺘﻪ ﻓﯿﻪ، وﻓﻲ ﻗﺪ
ﻗﺎم ﻓﺮﻳﻖ ﺗﻄﻮﻳﺮ ﻣﺘﺮﺟﻢ PHP ﻣﺴﺒﻘﺎ ﺑﻌﻤﻞ ھﺬه اﻟﻤﮫﻤﺔ وﺗﺤﻮﻳﻞ ﻛﻤﯿﺔ ﺿﺨﻤﺔ ﻣﻦ اﻟﻤﻜﺘﺒﺎت اﻟﻤﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ C
إﻟﻰ ﻣﻜﺘﺒﺎت ﻣﺨﺼﺼﺔ ﻟﺘﻀﺎف إﻟﻰ اﻟﻤﺘﺮﺟﻢ، وﻣﻨﮫﺎ ﺣﺼﻠﻨﺎ ﻋﻠﻰ ﺟﻤﯿﻊ اﻟﻤﯿﺰات اﻟﺘﻲ ﺗﺤﺪﺛﻨﺎ ﻋﻨﮫﺎ ﻣﺜﻞ اﻟﻮﺻﻮل
إﻟﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﻣﻌﺎﻟﺠﺔ ﻣﻠﻔﺎت XML.   
ﺗﺎرﻳﺦ PHP   
ﺑﺪأت PHP ﻛﻤﻜﺘﺒﺔ ﻣﻦ اﻟﺪوال ﺗﻀﺎف ﻋﻠﻰ ﻟﻐﺔ Perl ﻟﺘﺴﮫﻞ ﻋﻤﻞ ﺑﺮاﻣﺞ CGI ﺑﻠﻐﺔ Perl، وﺑﻌﺪ أن ﺗﻠﻘﻰ
Rasmus Lerdof ﺑﻌﺾ اﻻﻗﺘﺮاﺣﺎت ﺑﺘﺤﻮﻳﻠﮫﺎ إﻟﻰ ﻣﺘﺮﺟﻢ ﺑﺴﯿﻂ، ﻗﺎم ﺑﻌﻤﻞ ذﻟﻚ اﻟﻤﺘﺮﺟﻢ وﻃﺮﺣﻪ ﻋﻠﻰ
اﻹﻧﺘﺮﻧﺖ وﺳﻤﺎه PHP أو Personal Home Pages أي اﻟﺼﻔﺤﺎت اﻟﺸﺨﺼﯿﺔ، ﻓﻘﺪ ﻛﺎن ﻋﺒﺎرة ﻋﻦ ﻧﺴﺨﺔ ﻣﺼﻐﺮة
ﻣﻦ Perl ﻣﻊ ﺑﻌﺾ اﻟﻤﯿﺰات اﻹﺿﺎﻓﯿﺔ ﻟﻠﻮﻳﺐ، ﺛﻢ أﺿﺎف إﻟﯿﻪ دﻋﻤﺎ ﻟﻨﻤﺎذج HTML وﺳﻤﺎه PHP2/FI، ﻓﻘﺎم
ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻤﺒﺮﻣﺠﯿﻦ ﺑﺎﻟﻌﻤﻞ ﻋﻠﻰ ﻣﺘﺮﺟﻢ PHP وأﺿﺎﻓﻮا إﻟﯿﻪ واﺟﮫﺔ ﺗﻄﺒﯿﻘﺎت ﺑﺮﻣﺠﯿﺔ API ﻟﺘﺴﮫﯿﻞ ﻋﻤﻠﯿﺔ
ﺗﻮﺳﻌﺘﻪ ﻓﺄﺻﺒﺢ ﻟﺪﻳﻨﺎ PHP  3، ﺑﻌﺪ ﻓﺘﺮة ﻣﻦ اﻟﺰﻣﻦ ﻗﺎﻣﺖ ﺷﺮﻛﺔ Zend ﻟﻠﺘﻘﻨﯿﺎت ﺑﻌﻤﻞ ﻣﺘﺮﺟﻤﮫﺎ اﻟﺨﺎص ﻟﻠﻐﺔ
واﻟﺬي ﺳﻤﻲ zend أﻳﻀﺎ، وﻗﺪ اﺗﺼﻒ ھﺬا اﻟﻤﺘﺮﺟﻢ ﺑﺎﻟﺴﺮﻋﺔ اﻟﻌﺎﻟﯿﺔ وﻗﺪراﺗﻪ اﻟﻤﺤﺴﻨﺔ، وﺟﻤﻊ ﻣﻊ ﻣﻜﺘﺒﺎت
PHP اﻷﺧﺮى ﻟﺘﻜﻮﻳﻦ ﻧﻮاة اﻟﻤﺘﺮﺟﻢ PHP، ﻣﺘﺮﺟﻢ PHP اﻵن ﻣﻘﺴﻢ ﻋﻠﻰ ﻗﺴﻤﺎن: اﻟﻤﺘﺮﺟﻢ zend وﻳﺘﻢ ﺗﻄﻮﻳﺮه
ﻋﻠﻰ ﻣﺰودات CVS اﻟﻤﻮﺟﻮدة ﻓﻲ ﻣﻮﻗﻊ zend واﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ ﻳﺴﻤﻰ PHP وھﻮ ﻋﺒﺎرة ﻋﻦ اﻟﻤﻜﺘﺒﺎت واﻟﺪوال
اﻷﺳﺎﺳﯿﺔ اﻟﺘﻲ ﺗﺄﺗﻲ ﻣﻊ اﻟﺒﺮﻧﺎﻣﺞ، ﻳﻘﻮم ﻣﺘﺮﺟﻢ zend ﺑﻘﺮاءة اﻟﻤﻠﻔﺎت وﻣﻌﺎﻟﺠﺘﮫﺎ واﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺘﻐﯿﺮات
وﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ وﺗﻮﻓﯿﺮ واﺟﮫﺔ ﺗﻄﻮﻳﺮ ﻟﻠﺘﻄﺒﯿﻘﺎت API ﻟﺘﻮﺳﻌﺔ اﻟﻠﻐﺔ، أﻣﺎ PHP ﻓﺘﺤﺘﻮي اﻵن ﻋﻠﻰ ﻣﻜﺘﺒﺎت
ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ C وﻣﺘﻮاﻓﻘﺔ ﻣﻊ واﺟﮫﺔ اﻟﺘﻄﺒﯿﻘﺎت اﻟﺘﻲ ﻳﻮﻓﺮھﺎ ﻣﺘﺮﺟﻢ zend، وﺑﺎﻟﺘﺎﻟﻲ ﻳﻌﻤﻞ اﻟﻘﺴﻤﺎن ﻣﻌﺎ
ﻟﺘﻜﻮﻳﻦ ﻣﺘﺮﺟﻢ PHP، وﻋﻨﺪﻣﺎ ﺗﺰور ﻣﻮﻗﻊ PHP اﻟﺮﺳﻤﻲ اﻵن وﺗﺤﺼﻞ ﻋﻠﻰ ﻣﺘﺮﺟﻢ PHP ﺟﺎھﺰا أو ﺗﺤﺼﻞ ﻋﻠﻰ
اﻟﺸﻔﺮة اﻟﺒﺮﻣﺠﯿﺔ اﻟﺨﺎﺻﺔ ﺑﻚ، ﻓﺈﻧﻚ ﺗﺤﺼﻞ ﻋﻠﻰ ﻛﻞ ﻣﻦ ﻣﺘﺮﺟﻢ zend وﻣﻜﺘﺒﺎت PHP ﻣﻌﺎ.   
ﺗﻄﻮر PHP ﺗﻄﻮرا ﻣﻔﺎﺟﺌﺎ ﻓﻲ اﻟﻔﺘﺮة اﻷﺧﯿﺮة، وﺗﺸﯿﺮ إﺣﺼﺎﺋﯿﺎ Net Craft إﻟﻰ أن ﻣﺘﺮﺟﻢ PHP ھﻮ أﻛﺜﺮ وﺣﺪات
ﻣﺰود Apache اﻧﺘﺸﺎرات ﻋﻠﻰ اﻹﻧﺘﺮﻧﺖ، ﻛﻤﺎ أن ﻣﺘﺮﺟﻢ PHP ﻣﺮﻛﺐ ﻋﻠﻰ ﺣﻮاﻟﻲ ﻣﻠﯿﻮﻧﻲ ﻣﺰود وﻳﺐ ﻋﻠﻰ
اﻹﻧﺘﺮﻧﺖ.   
  ﺑﻨﯿﺔ ﻣﻠﻔﺎت PHP  
ﻣﻠﻔﺎت PHP ھﻲ ﻣﻠﻔﺎت ﻧﺼﯿﺔ ﺑﺴﯿﻄﺔ، ﺗﺸﺒﻪ ﻓﻲ ﺗﺮﻛﯿﺒﮫﺎ ﻣﻠﻔﺎت ASP وﻣﻠﻔﺎت HTML ﺑﺸﻜﻞ ﻋﺎم، ﻳﺘﻜﻮن
ﻣﻠﻒ PHP ﻣﻦ ﻗﺴﻤﺎن، ﻗﺴﻢ HTML وﻗﺴﻢ PHP، اﻟﻤﻠﻒ ﺑﺎﻟﺼﻮرة اﻟﻄﺒﯿﻌﯿﺔ ﻋﺒﺎرة ﻋﻦ ﻣﻠﻒ HTML ﻋﺎدي،
وﻟﻜﻨﻚ ﺗﺴﺘﻄﯿﻊ ﺗﺤﺪﻳﺪ أﺟﺰاء ﻣﻌﯿﻨﺔ ﻣﻦ اﻟﻤﻠﻒ ﻟﯿﺨﺮج ﻓﯿﮫﺎ اﻟﻤﻠﻒ ﻣﻦ وﺿﻌﯿﺔ HTML إﻟﻰ وﺿﻌﯿﺔ PHP، ﻹﺧﺮاج
اﻟﻤﻠﻒ إﻟﻰ وﺿﻌﯿﺔ PHP ﺗﻮﺟﺪ ﻋﺪة ﻃﺮق :   
1 -  اﺳﺘﺨﺪام زوح اﻟﻮﺳﻮم <?php و ?> ﻛﺎﻟﺘﺎﻟﻲ : 


2 - اﺳﺘﺨﺪام زوج اﻟﻤﺨﺘﺼﺮ <? و ?> وھﻮ ﻳﺴﺘﺨﺪم ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ وﻟﻜﻨﻪ ﻳﻜﻮن ﺑﺪون اﻟﻜﻠﻤﺔ
php ﻓﻲ وﺳﻢ اﻟﺒﺪاﻳﺔ، ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻮﺳﻮم ﻳﺤﺘﺎج إﻟﻰ ﻛﻤﯿﺔ أﻗﻞ ﻣﻦ اﻟﻜﺘﺎﺑﺔ ﺑﺎﻟﻄﺒﻊ، وﻟﻜﻨﻪ ﻳﺘﻌﺎرض
ﻣﻊ وﺳﻮم xml، ﻟﺬا ﻳﻘﻮم اﻟﺒﻌﺾ ﺑﺈﻏﻼق ﻣﯿﺰة اﻟﻮﺳﻮم اﻟﻘﺼﯿﺮة ﺣﺘﻰ ﻻ ﻳﺤﺼﻞ ھﺬا اﻟﺘﻌﺎرض (  ﻳﻤﻜﻨﻚ
اﻏﻼق ھﺬه اﻟﻤﯿﺰة ﺑﺴﮫﻮﻟﺔ ﻋﻦ ﻃﺮﻳﻖ ﻣﻠﻒ إﻋﺪادات PHP ).
3 - اﺳﺘﺨﺪام زوج اﻟﻮﺳﻮم ASP، وھﻮ ﻣﻦ اﺳﻤﻪ زوج اﻟﻮﺳﻮم اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﻠﻔﺎت ASP وھﻤﺎ <% و
%>، ﻣﯿﺰة وﺳﻮم ASP ﻻ ﺗﻜﻮن ﻓﻌﺎﻟﺔ ﺑﺸﻜﻞ ﻗﯿﺎﺳﻲ وﻟﻜﻨﻚ ﺗﺴﺘﻄﯿﻊ ﺗﻔﻌﯿﻠﮫﺎ ﻋﻦ ﻃﺮﻳﻖ ﻣﻠﻒ إﻋﺪادات
ﻣﺘﺮﺟﻢ PHP.   
4 - اﻟﻄﺮﻳﻘﺔ اﻷﺧﯿﺮة ھﻲ اﺳﺘﺨﺪام زوج اﻟﻮﺳﻮم اﻟﺘﺎﻟﻲ : 




وﻟﻜﻦ ھﺬه اﻟﻄﺮﻳﻘﺔ ﻏﯿﺮ ﻣﺴﺘﺨﺪﻣﺔ اﻵن، ﺣﯿﺚ أﻧﮫﺎ ﺗﺼﻌﺐ ﻋﻤﻠﯿﺔ اﻟﺘﻤﯿﯿﺰ ﺑﯿﻦ ﺷﻔﺮات PHP وﺑﺎﻗﻲ
ﻣﻠﻒ HTML، وﻛﺬﻟﻚ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺒﺮاﻣﺞ ﻛﺘﺎﺑﺔ ﻣﻠﻔﺎت HTML اﻟﺘﻲ ﺗﻌﻄﻲ ﺗﻠﻮﻳﻨﺎ ﻟﻠﺸﻔﺮة ﻓﺄﻏﻠﺒﮫﺎ ﻻ
ﻳﺘﻌﺮف ﻋﻠﻰ ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﺸﻔﺮة وﻳﻌﺘﺒﺮه ﺟﺰءا ﻣﻦ ﻣﻠﻒ HTML اﻻﻋﺘﯿﺎدي. 
أﻓﻀﻞ اﻟﻄﺮق اﻟﺴﺎﺑﻘﺔ ﻟﻠﺘﺤﻮﻳﻞ إﻟﻰ وﺿﻌﯿﺔ PHP ھﻮ اﺳﺘﺨﺪام زوج اﻟﻮﺳﻮم اﻷول ﺑﺎﻟﻄﺒﻊ، ﺣﯿﺚ أﻧﻪ اﻷﻛﺜﺮ
اﺳﺘﺨﺪاﻣﮫﺎ، وﻻ ﻳﺤﺘﻮي ﻋﻠﻰ أﻳﺔ ﺗﻌﺎرﺿﺎت ﻛﻤﺎ أﻧﻪ ﻳﻌﻤﻞ ﻋﻠﻰ ﺟﻤﯿﻊ ﻣﺘﺮﺟﻤﺎت PHP ﻣﮫﻤﺎ ﻛﺎﻧﺖ إﻋﺪاداﺗﮫﺎ،
وﻟﮫﺬا اﻟﺴﺒﺐ ﺳﻨﺴﺘﺨﺪﻣﮫﺎ ﻓﻲ ﺟﻤﯿﻊ اﻷﻣﺜﻠﺔ اﻟﺘﻲ ﺳﺘﺠﺪھﺎ ﻓﻲ ھﺬه اﻟﺪورة.   
ﻛﺘﺎﺑﺔ ﻣﻠﻔﺎت PHP  
ﻣﻠﻔﺎت PHP ھﻲ ﻣﻠﻔﺎت ﻧﺼﯿﺔ ﺑﺴﯿﻄﺔ ﺗﻤﺎﻣﺎ ﻛﻤﺎ ھﻲ ﻣﻠﻔﺎت HTML، ﻳﻤﻜﻨﻚ ﻛﺘﺎﺑﺔ ﺳﻜﺮﻳﺒﺖ PHP ﺑﺄي ﺑﺮﻧﺎﻣﺞ
ﻛﺘﺎﺑﺔ ﻧﺼﻮص ﻳﺘﯿﺢ ﻟﻚ ﻛﺘﺎﺑﺔ اﻟﻤﻠﻔﺎت اﻟﻨﺼﯿﺔ اﻟﺒﺴﯿﻄﺔ Plain Text ﻣﺜﻞ Notepad ﻋﻠﻰ اﻟﻨﻈﺎم وﻳﻨﺪوز، وﻟﻜﻦ
أﻏﻠﺒﯿﺔ ﻣﺒﺮﻣﺠﻲ PHP ﻳﺴﺘﺨﺪﻣﻮن أدوات أﺧﺮى ﺗﺴﮫﻞ ﻋﻠﯿﮫﻢ ﻋﻤﻠﯿﺔ اﻟﺒﺮﻣﺠﺔ ﻋﻦ ﻃﺮﻳﻖ ﺗﻠﻮﻳﻦ اﻟﺸﻔﺮات
اﻟﺒﺮﻣﺠﯿﺔ، وﺗﺴﮫﻞ ﻋﻤﻠﯿﺔ اﻟﺒﺤﺚ ﻋﻦ اﻟﻤﻠﻔﺎت واﺳﺘﺒﺪال اﻟﻤﻘﺎﻃﻊ ﻣﻦ ﻋﺪة ﻣﻠﻔﺎت ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ، ﻣﺜﻞ
HomeSite، ﻋﻠﻰ اﻟﺮﻏﻢ ﻣﻦ أﻧﻚ ﻟﻦ ﺗﺤﺘﺎج إﻟﻰ اﻟﻜﺜﯿﺮ ﻣﻦ ھﺬه اﻟﻤﯿﺰات إﻻ أن اﺳﺘﺨﺪام Notepad ﻓﻲ ﻋﻤﻞ
ﻣﻠﻔﺎت PHP ﻳﻌﺘﺒﺮ أﻣﺮا ﺻﻌﺒﺎ ﺟﺪا وﺧﺎﺻﺔ ﻓﻲ اﻟﻤﻠﻔﺎت اﻟﻀﺨﻤﺔ ﺣﯿﺚ أن Notepad ﻻ ﺗﺘﯿﺢ ﻓﺘﺢ اﻟﻤﻠﻔﺎت
اﻟﻜﺒﯿﺮة، واﻟﻤﺸﻜﻠﺔ اﻷﻛﺒﺮ ھﻲ أﻧﮫﺎ ﻻ ﺗﻮﻓﺮ ﺗﺮﻗﯿﻤﺎ ﻟﻸﺳﻄﺮ، ﻓﺈذا ﻇﮫﺮت ﻟﻚ رﺳﺎﻟﺔ اﻟﺨﻄﺄ ﺗﺸﯿﺮ إﻟﻰ وﺟﻮد ﺧﻄﺄ
ﻓﻲ اﻟﺴﻄﺮ 53 ﻓﻠﻦ ﺗﺴﺘﻄﯿﻊ ﻣﻌﺮﻓﺔ اﻟﺴﻄﺮ اﻟﻤﻄﻠﻮب ﻓﻲ Notepad إﻻ إذا ﻗﻤﺖ ﺑﺎﻟﻌﺪ ﻳﺪوﻳﺎ ﻣﻦ اﻟﺴﻄﺮ اﻷول
وﺣﺘﻰ 53 .. ﺣﺴﻨﺎ ﻣﺎذا ﻟﻮ ﻛﺎن اﻟﺨﻄﺄ ﻓﻲ اﻟﺴﻄﺮ 652، ﻳﻤﻜﻨﻚ اﻟﺒﺪأ ﺑﻜﺘﺎﺑﺔ ﺳﻜﺮﻳﺒﺘﺎﺗﻚ ﺑﺎﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﺘﻮﻓﺮ اﻵن
إﻟﻰ أن ﺗﺤﺼﻞ ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ آﺧﺮ، ﻳﻤﻜﻨﻚ ﺑﺎﻟﻄﺒﻊ ﻓﺘﺢ ﻣﻠﻔﺎﺗﻚ ﺑﺄي ﻣﺤﺮر ﻧﺼﻮص، ﻓﺈذا ﻛﺘﺒﺘﮫﺎ ﺑﺎﺳﺘﺨﺪام
Notepad ﻓﮫﺬا ﻻ ﻳﻌﻨﻲ ﺑﺄﻧﻚ ﻣﻠﺰم ﺑﺎﺳﺘﺨﺪام Notepad ﻓﻲ ﺟﻤﯿﻊ ﻣﻠﻔﺎﺗﻚ أو ﺣﺘﻰ ﻓﻲ ھﺬا اﻟﻤﻠﻒ.



ﻟﻌﻤﻞ ﻣﻠﻒ PHP اﻵن ﻗﻢ ﺑﻔﺘﺢ ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺬي اﺧﺘﺮﺗﻪ واﺑﺪأ ﺑﻜﺘﺎﺑﺔ اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺗﺮﻳﺪھﺎ، وﻻ ﺗﻨﺴﻰ
إﺣﺎﻃﺔ ﺷﻔﺮات PHP ﺑﺎﻟﻮﺳﻮم اﻟﺨﺎﺻﺔ ﺑﮫﺎ، ﺛﻢ اﺣﻔﻆ اﻟﻤﻠﻒ ﻓﻲ أي ﻣﻜﺎن ﻓﻲ دﻟﯿﻞ ﻣﺰود اﻟﻮﻳﺐ اﻟﺨﺎص ﺑﻚ
وأﻋﻄﻪ اﻹﻣﺘﺪاد اﻟﻤﻨﺎﺳﺐ .php أو .php3 ﺣﺴﺐ إﻋﺪادات ﻣﺰودك، ﺛﻢ ﻗﻢ ﺑﺰﻳﺎرة اﻟﺼﻔﺤﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻤﺘﺼﻔﺢ
وﺳﺘﺠﺪ اﻟﺼﻔﺤﺔ وﻗﺪ ﺗﻤﺖ ﺗﺮﺟﻤﺘﮫﺎ وﻋﺮﺿﮫﺎ ﻋﻠﯿﻚ.   
ﺗﺬﻛﺮ ﺑﺄﻧﻚ ﻳﺠﺐ أن ﺗﺰور اﻟﺼﻔﺤﺔ ﻣﺮور ﺑﻤﺰود اﻟﻮﻳﺐ، وﻻ ﻳﻤﻜﻨﻚ ﻋﺮض اﻟﺼﻔﺤﺔ ﻋﻦ ﻃﺮﻳﻖ ﻓﺘﺤﮫﺎ ﻛﻤﻠﻒ
ﺧﺎرﺟﻲ، ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل، إذا ﻛﺎن اﻟﺪﻟﯿﻞ اﻟﺠﺬري ﻟﺼﻔﺤﺎت ﻣﺰودك ھﻮ :  \C:\httpd  
وﻗﻤﺖ ﺑﻌﻤﻞ ﺻﻔﺤﺔ أﺳﻤﯿﺘﮫﺎ test.php ﻓﻲ ذﻟﻚ اﻟﺪﻟﯿﻞ، ﻳﺠﺐ أن ﺗﻘﻮم اﻵن ﺑﺘﺸﻐﻞ ﻣﺰود اﻟﻮﻳﺐ وزﻳﺎرة
اﻟﺼﻔﺤﺔ ﻋﻠﻰ اﻟﻌﻨﻮان http://localhost/test.php، إذا ﻗﻤﺖ ﺑﺎﺳﺘﺨﺪام اﻷﻣﺮ Open ﻣﻦ اﻟﻘﺎﺋﻤﺔ File ﻓﻲ
اﻟﻤﺘﺼﻔﺢ ﻟﻔﺘﺢ اﻟﻤﻠﻒ C:\httpd\test.php ﻓﻠﻦ ﺗﺮى ﺻﻔﺤﺔ PHP ﻣﺘﺮﺟﻤﺔ، وﺳﺘﺮى ﺷﻔﺮة PHP ﻓﻘﻂ.   
ﺗﺪرﻳﺐ  
ﻗﻢ ﺑﺘﻨﻔﯿﺬ ﻣﻠﻒ PHP اﻟﺘﺎﻟﻲ : 
  
ﻣﺎ اﻟﺬي ﺗﺸﺎھﺪه ﻋﻨﺪ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ؟ ﻣﻦ اﻟﻤﻔﺘﺮض أن ﺗﺸﺎھﺪ اﻟﺨﺮج اﻟﺘﺎﻟﻲ : 

ھﺎ ﻗﺪ اﻧﺘﮫﯿﺖ ﻣﻦ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﻚ اﻷول ﺑﻠﻐﺔ PHP، ﻻ ﺗﻘﻠﻖ إذا ﻟﻢ ﺗﻔﮫﻢ أي ﺷﻲء ﻓﯿﻪ، ﺳﻨﺘﻌﻠﻢ اﻵن ﻛﯿﻔﯿﺔ
اﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮات واﻟﻌﺒﺎرات ﺑﻠﻐﺔ PHP. 
ﻟﻨﻜﺘﺐ ﺳﻜﺮﺑﺘًﺎ ﺑﺴﯿﻄًﺎ (ﻓﺎﺗﺢ ﺷﮫﯿﺔ) :
  
  
ﻗﻢ ﺑﺤﻔﻆ اﻟﻤﻠﻒ ﺑﺎﺳﻢ echo.php   
ﺳﺘﻌﺮض ﻋﻠﯿﻨﺎ ﻋﺒﺎره ﻣﻜﺘﻮب ﻓﯿﮫﺎ   
  
اﻟﺘﺤﯿﺔ ﻟﺪي أھﻞ ا ﻹﺳﻼم ھﻲ اﻟﺴﻼم ﻋﻠﯿﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮﻛﺎﺗﻪ   
  
ﺷﻲ ﺑﺴﯿﻂ أﻟﯿﺲ ﻛﺬﻟﻚ ؟   
ﻳﺘﻜﻮن ﻛﻮد اﻟـphp ﻣﻦ ﻧﺼﻮص و ﻛﻮد و ﻋﻼﻣﺎت وﻟﻐﺔ html وﻗﺪ ﻻﺗﺤﺘﻮي ﻋﻠﻰ ﻧﺼﻮص html .   
ﻟﻜﻲ ﻳﻌﻤﻞ اﻟﻜﻮد ﻳﺠﺐ أن ﻳﻜﻮن إﻣﺘﺪاد اﻟﻤﻠﻒ php أو ﺑﺄي إﻣﺘﺪاد ﻣﻦ إﻣﺘﺪادات اﻟـphp   
ﻣﺜ ًﻼ php3 و phtml   
   --
ﻋﻨﺪﻣﺎ ﺗﻄﻠﺐ ﺻﻔﺤﺔ ﻓﻲ اﻹﻧﺘﺮﻧﺖ ﻓﺈﻧﻚ ﺗﺠﺮي اﺗﺼﺎ ًﻻ ﻣﺒﺎﺷـ ًﺮا ﻣـﻊ اﻟـﺴﯿﺮﻓﺮ ھـﺬه اﻟﻌﻤﻠﯿـﺔ ﺗـﺪﻋﻲ request ﻟﻠـﺴﯿﺮﻓﺮ (ﻳﻌﻨـﻲ ﻃﻠﺒﯿـﺔ
ﻟﻠﺴﯿﺮﻓﺮ) ﻳﻘﻮم اﻟﺴﯿﺮﻓﺮ ﺑﺘﻔﺴﯿﺮ ﻃﻠﺒﻚ واﻟﺒﺤﺚ ﻋﻦ اﻟﺼﻔﺤﺔ اﻟﻤﻄﻠﻮﺑﺔ وﻳﺮﺳﻞ اﻟﯿﻚ اﻟﺼﻔﺤﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻛﺠﺰء ﻣﻤﺎ ﻳﺴﻤﻲ response
(اﺳﺘﺠﺎﺑﺔ) ﻟﻤﺴﺘﻌﺮض اﻻﻧﺘﺮﻧﺖ ﻟﺪﻳﻚ ﻳﻘﻮم ﺑﻌﺪھﺎ اﻟﻤﺘﺼﻔﺢ ﻟﺪﻳﻚ ﺑﺄﺧﺬ اﻟﻜﻮد اﻟﺬى ارﺟﻊ إﻟﯿﻪ وﻳﻘﻮم ﺑﺘﺠﻤﯿﻌﻪ (compile) ﻟﻜﻲ ﻳﺼﺒﺢﺻﻔﺤﺔ ﺻﺎﻟﺤﺔ ﻟﻠﻌﺮض ھﺬه اﻟﻌﻤﻠﯿﺔ اﻟﺘﻲ ﺣﺼﻠﺖ ﺗﺸﺒﻪ ﻧﻈﺮﻳﺔ اﻟﻌﻤﯿـﻞ ﻟﻠﺨـﺎدم(client to server) ﺑﺤﯿـﺚ أن اﻟﻤﺘـﺼﻔﺢ ھـﻮ اﻟﻌﻤﯿـﻞ
واﻟﺨﺎدم ھﻮ اﻟﺴﯿﺮﻓﺮ .   
اﻟﺨﺎدم ﻳﻘﻮم ﺑﻌﻤﻠﯿﺔ ﺗﺨﺰﻳﻦ وﺗﺮﺟﻤﺔ وﺗﻮزﻳﻊ اﻟﺒﯿﺎﻧﺎت ﺑﯿﻨﻤﺎ ﻳﻘﻮم اﻟﻌﻤﯿـﻞ (ﻣـﺴﺘﻌﺮض اﻻﻧﺘﺮﻧـﺖ ﻟـﺪﻳﻚ) ﺑـﺎﻟﻌﺒﻮر اﻟـﻰ اﻟـﺴﯿﺮﻓﺮ واﺣـﻀﺎر
اﻟﺒﯿﺎﻧﺎت   
ﺑﺮوﺗﻮﻛﻮﻻت اﻻﻧﺘﺮﻧﺖ :    
  
ﻻﻧﺮﻳﺪ ھﻨﺎ أن ﻧﺬھﺐ إﻟﻰ اﻟﺘﻜﻠﻢ ﻋﻦ ﺗﺎرﻳﺦ اﻧﺘﺮﻧﺖ اﻟﻌﺘﯿﻖ ، اﻟﻨﻘﻄﺔ اﻟﻤﮫﻤﺔ ھﻲ اﻟﺸﺒﻜﺔ اﻟﻤﺮﺑﻮﻃﺔ ﺑﻨﻘـﺎط nodes اﻻﻧﺘﺮﻧـﺖ ﺻـﻤﻤﺖ
ﻟﻜﻲ ﺗﻘﻮم ﺑﺎﻟﺤﻔﺎظ ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﺎت ﻟﻜﻲ ﻳﺘﻢ ﻧﻘﻠﮫﺎ ﻣﻦ ﻣﻜﺎن إﻟﻰ آﺧـﺮ وھـﻲ ﺗـﺴﺘﺨﺪم ﻣﺠﻤﻮﻋـﺔ ﻣـﻦ اﻟﺒﺮوﺗﻮﻛـﻮﻻت ﻣﺜـﻞ Tcp/Ip
ﻟﻜﻲ ﻳﺘﻢ ﻧﻘﻞ اﻟﺒﯿﺎﻧﺎت ﻋﺒﺮ اﻟﺸﺒﻜﺔ .   
  
   Tcp/Ip ﺑﺮوﺗﻮﻛﻮل
ﻣﻦ ﻣﻤﯿﺰات ھﺬا اﻟﺒﺮوﺗﻮﻛﻮل أﻧﻪ ﺑﺈﺳﺘﻄﺎﻋﺘﻪ إﻋﺎده ﺗﻤﮫﯿـﺪ ﻃﺮﻳﻘـﻪ ﻟﻠﺒﯿﺎﻧـﺎت إذا ﺗـﻢ ﺧﻠـﻞ ﻓـﻲ ﻧﻘﻄـﺔ أو ﻣﻜـﺎن أﺛﻨـﺎء ﻧﻘﻠﮫـﺎ وﻳـﺘﻢ ذﻟـﻚ
ﺑﺴﺮﻋﺔ ﺷﺪﻳﺪة.ﻋﻨﺪﻣﺎ ﻳﻄﻠﺐ اﻟﻤﺴﺘﺨﺪم ﻣﻦ اﻟﻤﺴﺘﻌﺮض أن ﻳﺠﻠﺐ ﻟﻪ ﺻﻔﺤﺔ ﻣـﻦ اﻻﻧﺘﺮﻧـﺖ ﻓـﺈن اﻟﻤـﺴﺘﻌﺮض ﻳﺠﻠـﺐ ھـﺬه اﻷواﻣـﺮ
ﺑﺎﺳﺘﺨﺪام ﺑﺮوﺗﻮﻛﻮل ﻳﺪﻋﻲ ﺑﺮوﺗﻮﻛﻮل اﻟﺘﺤﻜﻢ ﻓﻲ ﻧﻘـﻞ اﻟﺒﯿﺎﻧـﺎت TCP ھـﺬا اﻟﺒﺮوﺗﻮﻛـﻮل ھـﻮ ﺑﺮوﺗﻮﻛـﻮل ﻧﻘـﻞ ﻟﻠﺒﯿﺎﻧـﺎت وھـﻮ ﻳـﻀﻤﻦ أن
اﻟﺒﯿﺎﻧﺎت ﻗﺪ ﺗﻢ إرﺳﺎﻟﮫﺎ ووﺻﻮﻟﮫﺎ ﺑﺸﻜﻞ ﺻﺤﯿﺢ .



ﻗﺒﻞ أن ﻳﺘﻢ إرﺳﺎل اﻟﺒﯿﺎﻧﺎت ﻋﺒﺮ اﻟﺸﺒﻜﺔ ﻳﺠﺐ ﻋﻨﻮﻧﺘﮫﺎ واﻟﺒﺮوﺗﻮﻛﻮل اﻟﺬي ﻳﻘﻮم ﺑﻌﻨﻮﻧـﺔ اﻟﺒﯿﺎﻧـﺎت ﻳـﺪﻋﻲ HTTP ﻳﻘـﻮم ھـﺬا اﻟﺒﺮوﺗﻮﻛـﻮل
ﺑﻮﺿﻊ ﻋﻨﻮﻧﺔ ﻟﻠﺒﯿﺎﻧﺎت ﻟﻜﻲ ﻳﻌﺮف اﻟﺒﺮوﺗﻮﻛﻮل TCP أﻳﻦ ﺳﯿﻨﻘﻞ اﻟﺒﯿﺎﻧﺎت (ﻓﮫﻮ ﻻﻳﺴﺘﻄﯿﻊ ﻧﻘﻞ اﻟﺒﯿﺎﻧﺎت إذا ﻟﻢ ﻳﻜﻦ ﻟﮫﺎ ھـﺪف أو ﻣﻜـﺎن ) 
ﻳﺴﺘﺨﺪم اﻟﺒﺮوﺗﻮﻛﻮل HTTP ﻋﻦ ﻃﺮﻳﻖ اﻟﻮﻳﺐ ﻓﻲ ﻋﻤﻠﯿﺔ ﻧﻘﻞ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻛﻤﺒﯿﻮﺗﺮ إﻟـﻰ آﺧﺮﻋﻨـﺪﻣﺎ ﺗـﺮى اﻟـﺼﻔﺤﺔ ﻣﺘﺒﻮﻋـﺔ ﺑــhttp://
ﻓﺎﻧﻚ ﺗﻌﻠﻢ ﻣﺒﺎﺷﺮة أن اﻻﻧﺘﺮﻧﺖ ﻳﺴﺘﺨﺪم اﻟﺒﺮﺗﻮﻛﻮل HTTP ﻹﺣﻀﺎر ھﺬه اﻟﺼﻔﺤﺔ ﻳﻤﻜﻨﻚ أن ﺗﺎﺧﺬ ﺻﻮرة ﺑﺄن اﻟـTCP ﻋﺒﺎرة ﻋﻦ ﺳﺎﻋﻲ
ﺑﺮﻳﺪ اﻟﺬي ﻳﻘﻮم ﺑﺈﻳﺼﺎل رﺳﺎﻟﺔ ، ھﺬه اﻟﺮﺳﺎﻟﺔ ﻓﯿﮫﺎ ﻃﺎﺑﻊ ﺑﺮﻳﺪ وﻋﻨﻮان وھﻮ ﻣﺎﻧﺴﻤﯿﻪ ﺑﺎﻟـHTTP .   
  
ﻳﺘﻢ ﺗﻤﺮﻳﺮ اﻟﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﻌﺮض إﻟﻰ ﻣﻠﻘﻢ أو ﺳﯿﺮﻓﺮ اﻟﻮﻳﺐ وھﻮ ﻣﺎﻳﻌﺮف ﺑـ HTTP request وﻳﻘﻮم اﻟﺴﯿﺮﻓﺮ ﺑﺮؤﻳﺔ ﻣﺴﺘﻮدع اﻟﺒﯿﺎﻧﺎت
ﻟﺪﻳﻪ ﻟﻜﻲ ﻳﺤﺼﻞ ﻋﻠﻰ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻄﻠﻮﺑﺔ ﻓﺈذا وﺟﺪ اﻟﺼﻔﺤﺔ ﻓﻲ اﻟﻤﺴﺘﻮدع ﻗﺎم ﺑﺈرﺳﺎﻟﮫﺎ ﻋﻠﻰ ﺷﻜﻞ ﺣﺰم اﻟﻰ اﻟﺠﮫـﺔ اﻟﺘـﻲ ﻗﺎﻣـﺖ
ﺑﺎﻟﻄﻠﺐ ﺑﺎﺳﺘﺨﺪام ﺑﺮوﺗﻮﻛﻮل TCP وﻳﻌﻨﻮن ھﺬه اﻟﺤﺰم ﻟﻤـﺴﺘﻌﺮض اﻻﻧﺘﺮﻧـﺖ ﻟـﺪﻳﻚ ﺑﺎﺳـﺘﺨﺪام ﺑﺮوﺗﻮﻛـﻮل http (ﻧﻨﺒـﻪ داﺋﻤـﺎ اﻟـﻰ أﻧـﻪ
ﻳﺮﺳﻠﮫﺎ ﻋﻠﻰ ﺷﻜﻞ ﺣﺰم ﻟﻜﻲ ﺗﻌﺮف اﻟﺴﺒﺐ ﻋﻨﺪ ﻋﺪم ﻇﮫﻮر ﺻﻔﺤﺔ وﻳﺐ ﻛﺎﻣﻠﺔ أن ھﻨﺎك ﺣﺰﻣﺔ ﻟﻢ ﺗﺮﺳﻞ ﺑﺸﻜﻞ ﺟﯿﺪ) وﻟﻜﻦ إذا ﻟـﻢ
ﻳﺠﺪ اﻟﺴﯿﺮﻓﺮ اﻟﺼﻔﺤﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻓﺎﻧﻪ ﻳﻘﻮم ﺑﺈرﺳﺎل ﺻﻔﺤﺔ ﺗﺤﺘﻮي ﻋﻠﻰ رﺳﺎﻟﺔ ﺧﻄـﺎ 404 وھـﺬه اﻟـﺼﻔﺤﺔ اﻟﺘـﻲ أرﺳـﻠﺖ ﻣـﻦ ﻣﻠﻘـﻢ
اﻟﻮﻳﺐ اﻟﻰ اﻟﻤﺴﺘﻌﺮض ﻟﺪﻳﻚ ﺗﺴﻤﻲ HTTP response .   
  
ﺑﺮوﺗﻮﻛﻮل اﻟـ HTTP   
رﻏﻢ ﻣﺎ أﺧﺬﻧﺎه ﻣﻦ ﻣﻌﻠﻮﻣﺎت ﻛﺜﯿﺮة وﻗﺼﺺ ﻛﺜﯿﺮة ﺗـﺸﺒﻪ ﻗـﺼﺺ أﻟـﻒ ﻟﯿﻠـﺔ أو ﺣﻜﺎﻳـﺎت اﻷﻃﻔـﺎل إﻻ أﻧـﻪ رﻏـﻢ ذﻟـﻚ ﻳﻔﻮﺗﻨـﺎ اﻟﻜﺜﯿـﺮ ﻣـﻦ
اﻟﺘﻔﺎﺻﯿﻞ ﻓﻲ ھﺬا اﻟﻤﻮﺻﻮع ﻟﺬﻟﻚ دﻋﻨﺎ ﻧﻐﻮص ً ﻗﻠﯿﻼ ﻓﻲ اﻟﺘﻔﺎﺻﯿﻞ ﻋﻦ ﺑﺮوﺗﻮﻛﻮل HTTP ﺑﺸﻜﻞ ﺧﺎص.   
  
ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﻌﻤﻠﯿﺔ ﻃﻠﺐ ﻟﺼﻔﺤﺔ ﻣﻦ اﻟﺴﯿﺮﻓﺮ ھﻨﺎك أﻣﻮر إﺿﺎﻓﯿﺔ ﺗﺮﺳﻞ ﻣﻊ ﻋﻤﻠﯿﺔ اﻟﻄﻠﺐ http request ﻏﯿﺮ اﻟــURL وھـﻲ ﺗﺮﺳـﻞ
ﻛﺠﺰء ﻣﻦ http request .   
ﻧﻔﺲ اﻟﻤﻮﺿﻮع ﻣﻊ الhttp response ھﻨﺎك أﻣﻮر أﺧﺮى ﺗﺼﻞ ﻣﻌﻪ ﻛﺠﺰء ﻣﻨﻪ .   
  
اﻟﻜﺜﯿﺮ ﻣﻦ ھﺬه اﻟﻤﻌﻠﻮﻣﺎت ﺗﻮﻟﺪ ﺗﻠﻘﺎﺋﯿًﺎ ﻓﻲ رﺳـﺎﻟﺔ اﻟــHTTP وﻻﻳﻘـﻮم اﻟﻤـﺴﺘﺨﺪم ﺑﺎﻟﺘﻌﺎﻣـﻞ ﻣﻌﮫـﺎ ﻣﺒﺎﺷـﺮة , إذن ﻻﻳﺤﺘـﺎج أن ﺗﻘﻠـﻖ
ﻧﻔﺴﻚ ﺑﺸﺄن ھﺬه اﻟﻤﻌﻠﻮﻣﺎت إذا أﻧﺖ ﻟﻢ ﺗﻨﺸﺄھﺎ ﻓﻲ اﻷﺻﻞ وﻳﺠﺐ أن ﺗﺄﺧﺬ أﻳﻀﺎ ﻓﻲ ﻣﻌﻠﻮﻣﺎﺗـﻚ أن ھـﺬه اﻟﻤﻌﻠﻮﻣـﺎت ﺗﺮﺳـﻞ ﻛﺠـﺰء
ﻣﻦ اﻟـHTTP request واﻟـHTTP response ﻷن ﺳﻜﺮﺑﺖ اﻟـPHP اﻟﺬي ﻧﺼﻨﻌﻪ ﻳﻤﻨﺤﻨﺎ ﺗﺤﻜﻤًﺎ إﺿﺎﻓﯿﺎ ﺑﮫﺬه اﻟﻤﻌﻠﻮﻣﺎت .   
  
ﻛﻞ رﺳﺎﺋﻞ اﻟـHTTP ﺗﺄﺧﺬ ﺗﻨﺴﯿﻘًﺎ ﻣﻌﯿﻨًﺎ ﺳﻮاء ﻛﺎﻧﺖ Request أو Response . ﻧﺴﺘﻄﯿﻊ أن ﻧﻘﻮم ﺑﺘﻘﺴﯿﻢ ھﺬا اﻟﺘﻨـﺴﯿﻖ إﻟـﻰ ﺛﻼﺛـﺔ
أﻗﺴﺎم :  
  Request/response line - 1
  Http header - 2
  Http body - 3
  
اﻟﻤﺤﺘﻮي ﻣﻦ ھﺬه اﻷﺷﯿﺎء اﻟﺜﻼﺛﺔ ﻳﻌﺘﻤﺪ ﻋﻠـﻰ ﻧـﻮع اﻟﺮﺳـﺎﻟﺔ إذا ﻛﺎﻧـﺖ HTTp Request أو HTTP response ﻟـﺬﻟﻚ ﺳـﻨﺘﻜﻠﻢ ﻋـﻨﮫﻢ
ﺑﺘﻌﻤﻖ أﻛﺜﺮ .   
  
   Http Request
ﻳﺠﺐ أن ﻳﺤﺘﻮي اﻟـrequest ﻋﻠﻰ اﻷﻗﻞ اﻟـrequest line (ﺳﻄﺮ اﻟﻄﻠﺐ) واﻟـHOST .   
ﻳﺮﺳﻞ ﻣﺴﺘﻌﺮض اﻻﻧﺘﺮﻧﺖ ﻃﻠﺒﯿﺔ (HTTP request) إﻟﻰ ﻣﻠﻘﻢ اﻟﻮﻳﺐ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺘﺎﻟﻲ :  
  
   The Request Line -1
اﻟﺴﻄﺮ اﻷول ﻣﻦ ﻛﻞ ﻃﻠﺒﯿﺔ (http request) ھﻲ Request Line اﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت :  
أ - أﻣﺮ HTTP وھﻮ ﻣﺎﻳﻌﻨﻲ ﺑـ method .   
ب - اﻟﻤﺴﺎر ﻣﻦ اﻟﺴﯿﺮﻓﺮ إﻟﻰ اﻟﻤﺼﺎدر اﻟﻤﻄﻠﻮﺑﺔ (ﺻﻔﺤﺎت اﻻﻧﺘﺮﻧﺖ ) اﻟﻤﻄﻠﻮﺑﺔ ﻣﻦ ﻗﺒﻞ اﻟﻌﻤﯿﻞ (اﻟﻤﺴﺘﻌﺮض)   
ﺟـ - إﺻﺪارة اﻟـHTTP .     
إذن ﻛﻤﺜﺎل ﻋﻠﻰ اﻟـ Request Line أﻧﻈﺮ إﻟﻰ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻰ :  
   GET /testpage.htm HTTP/1.1
  
اﻟـmethod ﻳﺨﺒﺮ اﻟﺴﯿﺮﻓﺮ ﻛﯿﻒ ﻳﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻄﻠﺐ ھﻨﺎك ﺛﻼﺛﺔ أﻧﻮاع ﺷﺎﺋﻌﻪ ﻣﻦ اﻟـmethod   
   HTTP Header -2
اﻟﺒﺖ اﻟﺜﺎﻧﻲ ﻣـﻦ اﻟﻤﻌﻠﻮﻣـﺎت ھـﻮ اﻟﮫﯿـﺪر HTTP Header .اﻟـﺬي ﻳﺤﺘـﻮي ﻋﻠـﻰ ﺗﻔﺎﺻـﯿﻞ أو وﺛـﺎﺋﻖ ﻋـﻦ اﻟﻌﻤﯿـﻞ ﻣﺜـﻞ ﻧـﻮع اﻟﻤﺘـﺼﻔﺢ
(ﻧﺘﺴﻜﯿﺐ أو إﻛﺴﺒﻠﻮر) اﻟﺬي ﻗﺎم ﺑﻄﻠﺐ اﻟﺼﻔﺤﺔ واﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ واﻹﻋﺪادات اﻟﻌﺎﻣﺔ   
اﻟـHTTP Header ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻧﺴﺘﻄﯿﻊ ﺗﻘﺴﯿﻤﮫﺎ اﻟﻰ ﺛﻼث ﻓﺌﺎت وھﻲ :  
أ - ﻋﺎﻣﺔ GENERAL : ﺗﺤﺘﻮي ﻣﻌﻠﻮﻣﺎت إﻣﺎ ﻋﻦ اﻟﻌﻤﯿﻞ أو اﻟﺴﯿﺮﻓﺮ وﻻﺗﺨﺼﺺ إﻟﻰ ﻓﺮد أو ﻣﺠﻤﻮﻋﺔ .   
ب - ﺷﺨﺼﯿﺔ Entity : ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ أرﺳﻠﺖ ﺑﯿﻦ اﻟﻤﺘﺼﻔﺢ واﻟﺴﯿﺮﻓﺮ .   
ﺟـ - ﻣﻄﻠﻮﺑﺔ Request : ﺗﺤﺘﻮي ﻋﻠﻰ ﺑﯿﺎﻧﺎت ﻋﻦ إﻋﺪادات اﻟﻌﻤﯿﻞ واﻷﻧﻮاع اﻟﻤﺨﺘﻠﻔﺔ اﻟﻤﻘﺒﻮﻟﺔ ﻣﻦ اﻟﺒﯿﺎﻧﺎت .   
  
وھﺬا ﻣﺜﺎل :  
   * / * :Accept
  
   .Accept language: Arabic-KSA
   .Connection: Keep –Alive
   Host : http://www.arabbuielder.com
   Referer: http://www.arabbuielder.com/index.php?something=132
   (.........;User –Agent :Iexploer (win98
  
ﻣﺜﻠﻤﺎ ﺗﺮى اﻟـ HTTP Header ﻋﺒﺎرة ﻋﻦ إﻋﺪاد ﻳﺘﻜﻮن ﻣﻦ ﻋﺪة ﺳﻄﻮر ﻛﻞ ﺳﻄﺮ ﻳﺤﺘﻮي ﻋﻠﻰ ﻗﯿﻢ ﻣﻌﯿﻨﺔ .   
  
ھﻨﺎك ﻋﺪة ﺳﻄﻮر ﺗﺸﻜﻞ اﻟـ HTTP header وأﻛﺜﺮھﺎ إﺧﺘﯿﺎري , ﻳﻘﻮم اﻟـHTTP ﺑﺎﻹﺧﺒﺎر ﻋﻦ إﻧﺘﮫـﺎء ﻣﻌﻠﻮﻣـﺎت اﻟــ header ﺑﺘـﺮك ﺳـﻄﺮ
ﻓﺎرغ (وھﺬا ﻳﻜﻮن ﻓﻲ اﻟـHTTP1.1 ) .   
  
   : The HTTP Body -3
إذا ﺗﻢ اﺳﺘﺨﺪام اﻷﻣﺮ POST ﻓﻲ اﻟـHTTP Request Line ﻋﻨﺪھﺎ ﻳﻘﻮم اﻟـ HTTP ﺑﻄﻠﺐ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ارﺳـﻠﺖ ﻓـﻲ اﻟــbody اﻟـﻰ
اﻟﺴﯿﺮﻓﺮ .   
  
    Http Response
ﻳﺮﺳﻞ ﻣﻦ اﻟﺴﯿﺮﻓﺮ إﻟﻰ اﻟﻤﺴﺘﻌﺮض وﻳﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ أﺷﯿﺎء :   
   the Response Line -1
   http header - 2
   Http Body - 3
  
  The Response Line - 1
اﻟـ response line ﻳﺤﺘﻮي ﻓﻘﻂ ﻋﻠﻰ ﻧﻮﻋﯿﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت :  
1 - رﻗﻢ إﺻﺪارة اﻟـHTTP .   
2 - ﺷﻔﺮه أو ﻛﻮد اﻟـhttp request اﻟﺘﻲ ﺗﻘﻮم ﺑﺘﺤﺪﻳﺪ إذا ﻛﺎن اﻟـrequest ﻧﺎﺟﺤًﺎ أم ﻓﺎﺷﻞ .   
  
ﻣﺜﺎل :   
   HTTP/1.1 200 OK
  
ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﻳﻘﻮم اﻟـresponse line ﺑﺈرﺟﺎع اﻟﻘﯿﻤﻪ 200 ﻣﺘﺒﻮﻋﺔ ﺑﺎﻟﻜﻠﻤﺔ OK ھﺬه ﺗﺸﻜﻞ وﺗـﺸﯿﺮ إﻟـﻰ ﻧﺠـﺎح اﻟــ request وﻳﻜـﻮن
اﻟـresponse ﻳﺤﺘﻮي ﻋﻠﻰ اﻟﺼﻔﺤﺔ اﻟﻤﻄﻠﻮﺑﺔ واﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﺴﯿﺮﻓﺮ . وﻣﺜﺎل آﺧﺮ ھﻮ اﻟﺸﻔﺮة 404 ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﻄﻠﺐ ﺻﻔﺤﺔ وﻳﻔـﺸﻞ
اﻟﺴﯿﺮﻓﺮ ﻓﻲ اﻟﺤﺼﻮل ﻋﻠﯿﮫﺎ .  
  
  HTTP Header - 2
اﻟـ response header ﻳﻌﺘﺒﺮ ﻣﺸﺎﺑﻪ request hader اﻟﺬي ﻧﺎﻗﺸﻨﺎه ﻓﻲ اﻷﻋﻠﻰ .وﺗﻨﻘﺴﻢ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﻓﯿﻪ أﻳﻀﺎ إﻟﻰ ﺛﻼﺛﺔ أﻧـﻮاع
   :
أ - ﻋﺎﻣﺔ GENERAL : ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟـ client أو اﻟﺴﯿﺮﻓﺮ وﻻﺗﺨﺼﺺ إﻟﻰ واﺣﺪ ﻣﻨﮫﻤﺎ .   
ب - ﺷﺨﺼﯿﺔ Entity : ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻳﺘﻢ ارﺳﺎﻟﮫﺎ ﺑﯿﻦ اﻟﺴﯿﺮﻓﺮ واﻟﻌﻤﯿﻞ .   
ﺟـ - اﻹﺟﺎﺑﺔ Response : ﻳﺤﺘﻮي ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺴﯿﺮﻓﺮ اﻟﺬي ﻗﺎم ﺑﺈرﺳﺎل اﻟﺮد وﻛﯿﻔﯿﺔ ﺗﻌﺎﻣﻠﻪ وﻣﻌﺎﺟﻠﺘﻪ ﻟﻠﺮد (Response ) .   
  ﻛﻤﺎ ﻗﻠﻨﺎ ﺳﺎﺑﻘًﺎ ، ﻳﺘﻜﻮن ﻣﻦ ﻋﺪه ﺳﻄﻮر وﻳﺘﻢ وﺿﻊ ﺳﻄﺮ ﻓﺎرغ ﻟﻺﻋﻼم ﻋﻦ إﻧﺘﮫﺎء اﻟﮫﯿﺪر .
ﻣﺜﺎل :  
   HTTP/1.1 200 OK -the satus line
   Date: Mon; 1st Nov 1999, 16:12:23 GMT -general header
   Server : Apache/1.3.12 (Unix) (SUSE/Linux) PHP/4.0.2 -the response
   Last-modified: Fri, 29 Oct 1999, 12:08:03 GMT -Entity Header
  
اﻟﺴﻄﺮ اﻷول ﻧﺎﻗﺸﻨﺎه واﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻣﻔﮫﻮم ﻣﻦ ﻏﯿـﺮ ﺷـﺮح ، اﻟـﺴﻄﺮ اﻟﺜﺎﻟـﺚ ﻳﻘـﻮم ﺑﺘﺤﺪﻳـﺪ اﻟﺒﺮﻧـﺎﻣﺞ ﺗﺒـﻊ اﻟـﺴﯿﺮﻓﺮ وﻧﻮﻋـﻪ وﻧﻈـﺎم            
اﻟﺘﺸﻐﯿﻞ اﻟﻘﺎﺋﻢ ﻋﻠﯿﻪ واﻟﺴﻄﺮ اﻷﺧﯿﺮ ﻳﻘﻮم ﺑﺘﻌﺮﻳﻒ آﺧﺮ وﻗﺖ ﺗﻢ ﻓﯿﻪ ﺗﻌﺪﻳﻞ أو ﺗﺠﺪﻳﺪ اﻟﺼﻔﺤﺔ .   
  
ﻣﻼﺣﻈﺔ : ﻗﺪ ﻳﺤﺘﻮي اﻟﮫﯿﺪر ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ھﺬه اﻟﻤﻌﻠﻮﻣﺎت أو ﻣﻌﻠﻮﻣﺎت ﻣﺨﺘﻠﻔﺔ وھﺬا ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻧﻮع اﻟﺸﻲ اﻟﻤﻄﻠﻮب ﻣﻦ اﻟﺴﯿﺮﻓﺮ
   .
  
  Http Body - 3
إذا ﺗﻢ ﻣﻌﺎﻟﺠﺔ اﻟﻄﻠﺐ ﺑﻨﺠﺎح ، ﻓـﺈن اﻟــHTTP response Body ﻳﺤﺘـﻮي ﻋﻠـﻰ ﻛـﻮد اﻟــHTML وﻳﻘـﻮم ﻣـﺴﺘﻌﺮض اﻻﻧﺘﺮﻧـﺖ ﺑﺘﻔـﺴﯿﺮھﺎ
وﺗﺤﻮﻳﻠﮫﺎ إﻟﻰ اﻟﺼﻔﺤﺔ اﻟﻨﮫﺎﺋﯿﺔ اﻟﺘﻲ ﺗﺮاھﺎ .   
  
أﻳﻦ ﺳﻜﺮﺑﺖ اﻟـPHP ﻣﻦ ذﻟﻚ ﻛﻠﻪ ؟    
أﺻﺒﺢ اﻵن ﻟﺪﻳﻨﺎ ﻣﻔﮫﻮﻣﯿﺔ ﺟﯿﺪة ﻋﻦ ﻃﺮﻳﻘﺔ إرﺳﺎل اﻟﻤﺴﺘﻌﺮض ﻃﻠﺐ ﺻﻔﺤﺔ ﻣﻦ اﻟﺴﯿﺮﻓﺮ وﻛﯿﻔﯿﺔ اﺳﺘﺠﺎﺑﺔ اﻟﺴﯿﺮﻓﺮ ﻟﮫﺬا اﻟﻄﻠﺐ .  
  
ﺗﻜﻠﻤﻨﺎ ﻋﻦ أن ﺳﻜﺮﺑﺖ اﻟـphp ﻳﺘﻜﻮن ﻣﻦ ﺛﻼﺛﺔ أﺷﯿﺎء : ﻧﺺ وﻛﻮد php وﻛﻮد html ، ﻻﻧﺴﻄﯿﻊ وﺻﻒ اﻟـhtml ﺑﺄﻧﮫﺎ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺑـﺸﻜﻞ
ﺟﯿﺪ وﻧﺴﺘﻄﯿﻊ أن ﻧﻘﻮل أن اﻟـphp ﻟﻐﺔ ﺳﻜﺮﺑﺘﺎت Scripting Language ﻷﻧﮫﺎ ﺗﻀﯿﻒ ﻗﺪرات html ﻋﻠﯿﮫﺎ ﻣﺜﻞ اﻟﺠﺪاول واﻟﻔﺮﻳﻤﺎت ﺑﻜﻮد
html ﺑﺪاﺧﻞ ﻛﻮد اﻟـphp ھﻨﺎك ﻟﻐﺎت ﺗﺴﻤﻲ ﻟﻐﺎت ﺳﻜﺮﺑﺘﺎت ﻗﺪ ﺗﻜﻮن ﻣﺘﺂﻟﻔًﺎ ﻣﻌﮫـﺎ ﻣﺜـﻞ اﻟﺠﺎﻓـﺎ ﺳـﻜﺮﺑﺖ واﻟﻔﺠـﻮل ﺑﯿـﺴﻚ ﺳـﻜﺮﺑﺖ
ﺑﺈﺳﺘﺜﻨﺎء أن اﻟﻔﺮق ﺑﯿﻨﮫﺎ وﺑﯿﻦ اﻟـphp ھﻮ أن اﻟـphp ﻟﻐﺔ ﺗﻌﺘﻤﺪ ﻋﻠـﻰ ﺟﮫـﺔ اﻟﻤـﺰود أي اﻟـﺴﯿﺮﻓﺮ وﻳﻤﻜﻨـﻚ ﺗﺨـﺼﯿﺺ اﻟﻤﺘـﺼﻔﺢ اﻟـﺬي
ﻳﺴﺘﻌﺮﺿﮫﺎ .   
ﺗﺠﻌﻠﻨﺎ اﻟـhtml ﻧﻀﻤﻦ ﺳﻜﺮﺑﺘﺎت اﻟـphp ﻓﯿﮫﺎ ﺿﻤﻦ ﻗﻮاﻋﺪ ﻟﺬﻟﻚ ﻟﻜﻲ ﻧﺴﺘﻄﯿﻊ ﺗﺸﻐﯿﻠﮫﺎ وﻟﻜﻨﻨﺎ ﻻﻧﻨﺴﻲ أن إﻣﺘﺪاد اﻟﻤﻠﻔﺎت ﻳﻈﻞ ﻛﻤﺎ
ھﻮ php أو php3 ﺑﺪون ﺗﻐﯿﺮ ﻓﯿﻪ ﻟﻜﻲ ﻳﺘﻢ إرﺳﺎل اﻟﺴﻜﺮﺑﺖ اﻟﻰ ﻣﻜﺘﺒﺔ اﻟﺘﺮﺟﻤﺔ (scripting engine) اﻟﺘﻲ ﺗﻘﻮم ﺑﺘﺮﺟﻤـﺔ اﻟـﺴﻜﺮﺑﺖ
إﻟﻰ html (ﻛﺄﻧﻚ ﺗﺘﺮﺟﻢ ﻣﻦ ﻋﺮﺑﻲ ﻹﻧﺠﻠﯿﺰي أو اﻟﻌﻜﺲ )   
  
ﻣﻔﮫﻮم اﻟـparsing و اﻟـExecution :    
ﻣﻤﻜﻦ أن ﻧﻘﺴﻢ ﻋﻤﻠﯿﺔ اﻟﺘﺮﺟﻤﺔ اﻟﺬي ﻳﻘﻮم ﺑﮫﺎ ﺳﯿﺮﻓﺮ php إﻟﻰ ﻗﺴﻤﯿﻦ أو ﻋﻤﻠﯿﺘﯿﻦ :  
اﻟﻌﻤﻠﯿﺔ اﻷوﻟﻰ : ھﻲ أن اﻟﺴﯿﺮﻓﺮ ﻳﻘﻮم أوﻻ ﺑﻔﺤﺺ ﻗﻮاﻋﺪ اﻟﻠﻐﺔ وھﺬا ﻻﻳﻀﻤﻦ أن اﻟﺴﻜﺮﺑﺖ ﺻﺤﯿﺢ ﻣﺎﺋﺔ ﺑﺎﻟﻤﺎﺋﺔ وﻟﻜﻨـﻪ ﺗـﺪﻗﯿﻖ ﻓـﻲ
اﻷواﻣﺮ وﻗﻮاﻋﺪ اﻟﻠﻐﺔ وھﺬا ﻣﺎﻳﺴﻤﻮﻧﻪ ﺑﺎﻟـParsing   
اﻟﻌﻤﻠﯿﺔ اﻟﺜﺎﻧﯿﺔ : ھﻲ ﺗﻨﻔﯿﺬ اﻟﺴﻜﺮﺑﺖ ﺑﻌﺪھﺎ وإﺧﺮاﺟﻪ ﻋﻠﻰ ﺷﻜﻞ ﻛﻮد html وھﺬا ﻣﺎﻳﺴﻤﻲ ﺑﺎﻟـ Execution .   
  
ﺑﻘﻲ أن ﻧﻘﻮل أﻣﺮًا ﻣﻌﺮوﻓًﺎ وھﻮ أن اﻟﺴﻜﺮﺑﺘﺎت ﻧﻮﻋﯿﻦ :  
  
1 - وھﻮ ﻣﺎﻳﻨﻔﺬ ﻣﻦ ﺟﮫﺔ اﻟﻤﺰود   
   Server –Side scripting
2 - ﻣﺎﻳﻨﻔﺬ ﻣﻦ ﺟﮫﺔ اﻟﻤﺴﺘﻌﺮض (ﺻﻔﺤﺔ اﻧﺘﺮﻧﺖ) .   
  
اﻟﺘﻌﻠﯿﻘﺎت    
ﻣﺎ رأﻳﻚ إذا ﻛﻨﺖ ﻓﻲ ﺷﺮﻛﺔ وﻛﺎن ﻣﻌﻚ أﻛﺜﺮ ﻣﻦ ﻣﺒﺮﻣﺞ وأردﺗﻢ ﺗﺼﻤﯿﻢ ﺑﺮﻧﺎﻣﺞ ، اإذن ﻗﺪ ﺗﺤﺘـﺎﺟﻮن ﻟﺘﻨﻈـﯿﻢ اﻟﻌﻤـﻞ وﺗﻌﺪﻳﻠـﻪ  ﻟـﺬا          
ﻣﻦ اﻟﻼزم أن ﺗﻘﻮم ﺑﻌﻤﻞ ﺗﻮﺿﯿﺢ ﻟﻔﺎﺋﺪة اﻟﻜﻮد اﻟﺬي ﻛﺘﺒﺘﻪ ﻛﻲ ﻳﺴﮫﻞ ﻓﮫﻤﻪ ﻋﻠﯿﮫﻢ وإﺿـﺎﻓﺔ ﺗﻌـﺪﻳﻼت ﻣﻨﺎﺳـﺒﺔ ، إذن اﻟﺘﻌﻠﯿﻘـﺎت          
ﺗﺴﺘﺨﺪم ﻓﻲ اﻹﻓﺎده ﻋﻦ ﺷﺮح اﻷﻛﻮاد أو إﺿﺎﻓﺔ ﻣﻌﻠﻮﻣﺎت ﻻﺗﺴﺘﻌﻤﻞ إﻻ ﻛﺘﻮﺿﯿﺢ أو أي ﺷﻲ آﺧﺮ .  
  
ﻳﻤﻜﻨﻚ ﻋﻤﻞ ﺗﻌﻠﯿﻖ ﻣﻦ ﺳﻄﺮ واﺣﺪ ﻛﺎﻟﺘﺎﻟﻰ :  
  
ﻣﺜﺎل آﺧﺮ :  

  
وأﻳﻀﺎ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﺗﻌﻠﯿﻖ ﻣﻦ أﻛﺜﺮ ﻣﻦ ﺳﻄﺮ ﻛﺎﻟﺘﺎﻟﻲ :   
  



الانتقال الى المتغيرات

إجمالي مرات مشاهدة الصفحة