Professional Documents
Culture Documents
PHP آموزش
PHP آموزش
PHP آموزش
ﭼﻜﻴﺪه
اﻳﻦ ﭘﺮوژه آﻣﻮزﺷﻲ ﺗﻮﺳﻂ داﻧﺸﺠﻮ ﻛﺎرﺷﻨﺎﺳﻲ داﻧﺸﮕﺎه ﺷﻤﺴﻲ ﭘﻮر ﻣﺤﺴﻦ رﺟﺒﻲ اﻧﺠﺎم ﺷﺪه و در
ﻣﻮرده آﻣﻮزش زﺑﺎن PHPاﺳﺖ ﻛﻪ اﻣﺮوزه ﭘﺮ اﺳﺘﻔﺎده ﺗﺮﻳﻦ زﺑﺎن ﺑﺮاي ﻃﺮاﺣﻲ ﺻﻔﺤﺎت ﻧﻴﺰ ﻣﻲ ﺑﺎﺷﺪ .
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﺤﻘﻴﻘﺎت اﻧﺠﺎم ﺷﺪه در ﺳﺎل 2013ﻧﺰدﻳﻚ ﺑﻪ 60%ﺳﺎﻳﺖ ﻫﺎي اﻳﺠﺎد ﺷﺪه ﺑﻪ وﺳﻴﻠﻪ ي اﻳﻦ
زﺑﺎن ﺑﻮده اﻧﺪ .اﻳﻦ زﺑﺎن از ﻣﺤﺒﻮﺑﻴﺖ ﺑﺴﻴﺎر ﺑﺎﻻﻳﻲ ﺑﺮﺧﻮردار ﻣﻲ ﺑﺎﺷﺪ .در اﻳﻦ ﭘﺮوژه ﺳﻌﻲ ﺷﺪه ﺗﺎ
اﻳﻦ زﺑﺎن از ﻣﺒﺘﺪي ﺗﺎ ﭘﻴﺸﺮﻓﺘﻪ ﺑﺎ اﺳﺘﻔﺎده از ﻣﺜﺎل ﻫﺎ و ﺗﻮﺿﻴﺤﺎت آﻣﻮزش داده ﺷﻮد و در آﺧﺮ ﻧﻴﺰ
ﭼﻨﺪﻳﻦ ﻣﺜﺎل ﻛﺎرﺑﺮدي در ﭘﺮوژه ﻫﺎي ﻛﺎري زده ﺷﺪه اﺳﺖ .اﻳﻦ آﻣﻮزش در 37ﻣﺜﺎل ) (Exampleﻛﻪ
ﻫﺮ ﻣﺜﺎل داراي ﻳﻚ ﻋﺪد ورد ﻛﻪ داراي ﭼﻨﺪﻳﻦ ﻣﺜﺎل ﻣﻲ ﺑﺎﺷﺪ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ .در ﻫﺮ ورد
ﭘﻴﺮاﻣﻮن ﭼﻨﺪ دﺳﺘﻮر PHPﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ و ﻣﺜﺎل ﻫﺎﻳﻲ ﺑﺮاي آن ﻫﺎ آورده ﺷﺪه اﺳﺖ ﻛﻪ ﻓﺎﻳﻞ
ﻣﺜﺎل ﻫﺎ درون ﭘﻮﺷﻪ ﻣﺜﺎل ﻣﻮﺟﻮد ﻣﻲ ﺑﺎﺷﺪ .ﺑﺮاي ﺷﺮوع ﺑﺎﻳﺪ از ﻣﺜﺎل 0ﺷﺮوع ﻧﻤﻮد ﻛﻪ در اﻳﻦ ورد
ﺟﺰﺋﻴﺎﺗﻲ در ﻣﻮرده PHPو دﺳﺘﻮرات آن و ﻧﺮم اﻓﺰار ﻫﺎي ﻣﻮرده ﻧﻴﺎز آﻣﺪه اﺳﺖ .ﺗﻤﺎﻣﻲ ﻧﺮم اﻓﺰار
ﻫﺎي ﻣﻮرده ﻧﻴﺎز درون ﭘﺮوژه ﻣﻮﺟﻮد ﻣﻲ ﺑﺎﺷﺪ .ﻣﺜﺎل ﻫﺎي ﭘﺮوژه از اﺑﺘﺪا دﺳﺘﻮررات PHPﺷﺮوع ﺷﺪه
اﺳﺖ و ﺷﺮح ﻛﺎﻣﻞ آن ﻫﺎ آﻣﺪه اﺳﺖ و اﻳﻦ دﺳﺘﻮرات اداﻣﻪ ﭘﻴﺪا ﻧﻤﻮده اﻧﺪ ﺗﺎ اﺳﺘﻔﺎده از ﭘﺎﻳﮕﺎه داده
MySqlو ذﺧﻴﺮه اﻃﻼﻋﺎت در آن ﺑﻪ ﻋﻼوه اﻧﺠﺎم ﻋﻤﻠﻴﺎﺗﻲ ﻫﻤﭽﻮن درج ,ﺣﺬف ,وﻳﺮاﻳﺶ و . ...ﻫﻤﭽﻨﻴﻦ
در ﻣﻴﺎن ﻣﺜﺎل ﻫﺎ ﻧﺤﻮه اﺳﺘﻔﺎده از ﺗﻜﻨﻮﻟﻮژي Ajaxﺑﺎ اﻧﺠﺎم ﻣﺜﺎل ﻫﺎي ﻛﺎرﺑﺮدي ﺑﻪ ﺧﻮﺑﻲ آﻣﻮزش داده
ﺷﺪه اﺳﺖ .ﺑﺎ ﻣﻄﺎﻟﻌﻪ دﻗﻴﻖ اﻳﻦ ﭘﺮوژه ﺷﺨﺺ ﺧﻮاﻧﻨﺪه ﺑﻪ ﺧﻮﺑﻲ ﺑﺎ زﺑﺎن PHPآﺷﻨﺎﻳﻲ ﻛﺎﻣﻞ ﭘﻴﺪا ﻣﻲ
ﻛﻨﺪ و ﺑﻪ ﻣﺒﺎﺣﺚ آن ﻣﺎﻧﻨﺪ ﺷﺊ ﮔﺮاﻳﻲ ,ﻛﺎر ﺑﺎ ﻓﺎﻳﻞ ﻫﺎ ,اﺳﺘﻔﺎده از Ajaxو ..ﺗﺴﻠﻂ ﻻزم را ﭘﻴﺪا ﻣﻲ
ﻧﻤﺎﻳﻴﺪ .
ﻓﻬﺮﺳﺖ
ﻓﺼﻞ اول 12.............................................................................................
1 | P a g e
ﭘﻴﺸﮕﻔﺘﺎر
ﻣﻌﺮﻓﻲ PHP
PHPﻳﻚ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺳﻜﺮﻳﭙﺘﻲ اﭘﻦ ﺳﻮرس اﺳﺖ ﻛﻪ ﺑﺮاي ﻃﺮاﺣﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺗﺤﺖ وب ﺳﺮور ﺑﻪ
ﻛﺎر ﻣﻲ رود .ﺳﻤﺖ ﺳﺮور ﺑﻮدن ﺑﻪ اﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﺻﻔﺤﺎت PHPاﺑﺘﺪا ﺗﻮﺳﻂ ﺳﺮور )ﻛﻪ ﻣﻲ ﺗﻮاﻧﺪ از ﻧﻮع
Apacheﻳﺎ ( IISﺑﺎﺷﺪ ,ﭘﺮدازش ﺷﺪه و ﺳﭙﺲ ﺧﺮوﺟﻲ ﺑﻪ ﺻﻮرت ﻛﺪ ﻫﺎي HTMLو ﺟﺎوا اﺳﻜﺮﻳﭙﺖ ﺑﺮاي
ﻣﺮورﮔﺮ ﻛﺎرﺑﺮ ارﺳﺎل ﻣﻲ ﺷﻮد .ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ وﻇﻴﻔﻪ اﺟﺮاي ﺻﻔﺤﺎت PHPﺑﻪ ﻋﻬﺪه ﺳﺮور وب ﻫﺎﺳﺖ
ﺳﺎﻳﺖ ﻣﻲ ﺑﺎﺷﺪ ﺑﺮ ﺧﻼف HTMLﻳﺎ ﺟﺎوا اﺳﻜﺮﻳﭙﺖ .
PHPﻣﺨﻔﻒ ﻋﺒﺎرت Hypertext PreProcessorﺑﻪ ﻣﻌﻨﺎ ﭘﻴﺶ ﭘﺮدازﻧﺪه ﻓﺮا ﻣﺘﻦ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ در ﺳﺎل 1994
ﺗﻮﺳﻂ رﺳﻤﻮس ﻟﺮدورف اﻳﺠﺎد ﺷﺪ و ﺳﭙﺲ ﺗﺴﻂ ﺳﺎﻳﺮﻳﻦ ﺗﻮﺳﻌﻪ و ﮔﺴﺘﺮش ﭘﻴﺪا ﻛﺮد .اوﻟﻴﻦ ﻧﮕﺎرش
ﻋﻤﻮﻣﻲ آن در اواﻳﻞ ﺳﺎل 95اراﺋﻪ ﺷﺪ و ﺑﺎ ﻧﺎم Personal Home Page Toolsرواﻧﻪ ﺑﺎزار ﺷﺪ اﻟﺒﺘﻪ ﺑﺴﻴﺎر
ﺳﺎده ﺑﻮد .
ﺳﺎﺧﺘﺎر زﺑﺎن PHPﺑﺴﻴﺎر ﺷﺒﻴﻪ ﺑﻪ زﺑﺎن Cو در ﻧﺴﺨﻪ ﻫﺎي ﺟﺪﻳﺪ ﺷﺒﻴﻪ ﺑﻪ ﺟﺎوا ﻣﻲ ﺑﺎﺷﺪ و ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ
از ﻣﺤﺒﻮﺑﻴﺖ ﻓﺮاواﻧﻲ ﺑﺮ ﺧﻮردار اﺳﺖ .از ﻣﺸﻬﻮر ﺗﺮﻳﻦ ﻧﺮم اﻓﺰار ﻫﺎي ﺳﺎﺧﺘﻪ ﺷﺪه ﺑﺎ PHPﻣﻲ ﺗﻮان ﺑﻪ
ﺟﻮﻣﻼ ,وردﭘﺮس و ....اﺷﺎره ﻛﺮد .ﺳﺎﻳﺖ ﻫﺎي ﻓﺮاواﻧﻲ در ﺟﻬﺎن ﺑﺮ اﺳﺎس زﺑﺎن PHPﻧﻮﺷﺘﻪ ﺷﺪه اﻧﺪ و ﻫﺮ
روز ﻧﻴﺰ ﺑﺮ ﺗﻌﺪاد آن ﻫﺎ اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد .ﺑﺮ ﻃﺒﻖ آﻣﺎر ﻣﻨﺘﺸﺮ ﺷﺪه 60%از ﺳﺎﻳﺖ ﻫﺎي ﻣﻮﺟﻮد در ﺳﺮور ﻫﺎ
ﺑﺎ PHPﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ از ﻣﻬﻢ ﺗﺮﻳﻦ آن ﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ وﻳﻜﻲ ﭘﺪﻳﺎ و ﻓﻴﺴﺒﻮك اﺷﺎره ﻛﺮد PHP .اﻣﻜﺎن
اﺳﺘﻔﺎده از اﻧﻮاع ﻣﺨﺘﻠﻔﻲ از ﭘﺎﻳﮕﺎه داده را از ﺟﻤﻠﻪ , SqlLite , MySqlاوراﻛﻞ Microsoft , IBM DB2 ,
Sql Serverو ...را ﺑﺎ دﺳﺘﻮر ﻫﺎﻳﻲ ﺳﺎده ﻓﺮاﻫﻢ ﻣﻲ ﺳﺎزد .ﭘﻲ اچ ﭘﻲ روي ﺑﻴﺸﺘﺮ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﻫﺎي ﻣﻌﺮوف
از ﺟﻤﻠﻪ وﻳﻨﺪوز ,ﻟﻴﻨﻮﻛﺲ ,ﻳﻮﻧﻴﻜﺲ ,ﻣﻚ و ﺑﺎ اﻏﻠﺐ ﺳﺮور ﻫﺎي ﻣﻌﺮوف ﻗﺎﺑﻞ اﺟﺮاﺳﺖ .ﭘﻴﺶ از آﻏﺎز ﺑﻪ
ﻳﺎدﮔﻴﺮي PHPﺷﻤﺎ ﺑﺎﻳﺪ آﺷﻨﺎﻳﻲ ﻛﺎﻓﻲ ﺑﺎ زﺑﺎن ﻫﺎي HTMLو ﺟﺎوا اﺳﻜﺮﻳﭙﺖ و ﻛﺎر ﺑﺎ MySqlرا ﺑﺪاﻧﻴﺪ .
دﺳﺘﻮرات اﻳﻦ زﺑﺎن ﻣﻲ ﺗﻮاﻧﻨﺪ ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﻴﻢ در درون ﻛﺪ ﻫﺎي HTMLﻗﺮا ﺑﮕﻴﺮﻧﺪ .زﺑﺎن PHPاز
ﻧﺴﺨﻪ 4.3ﺑﻪ ﺑﻌﺪ ﻗﺎﺑﻠﻴﺖ ﭘﺸﺘﻴﺒﺎﻧﻲ از واﺳﻂ ﺧﻂ ﻓﺮﻣﺎن را ﻧﻴﺰ ﺑﻪ اﻣﻜﺎﻧﺎت ﺧﻮد اﺿﺎﻓﻪ ﻛﺮد ﻛﻪ اﻳﻦ ﻗﺎﺑﻠﻴﺖ
ﻣﻲ ﺗﻮاﻧﺪ ﺑﺮاي اﻳﺠﺎد ﻧﺮم اﻓﺰار ﻫﺎي ﻏﻴﺮ وب و ﻳﺎ ﻧﺮم اﻓﺰار ﻫﺎﻳﻲ ﺑﺎ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ ﻣﻮرد اﺳﺘﻔﺎده
ﻗﺮار ﺑﮕﻴﺮد .
2 | P a g e
ﻣﺰﻳﺖ ﻫﺎي PHP
PHPﻳﻚ اﺑﺰار اﭘﻦ ﺳﻮرس و راﻳﮕﺎن اﺳﺖ ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ ﻫﺎﺳﺖ ﻫﺎﻳﻲ ﻛﻪ ﻣﻴﺰﺑﺎﻧﻲ آن را اﻧﺠﺎم ﻣﻲ
دﻫﻨﺪ ﺑﺴﻴﺎر ارزان ﺗﺮ از ﻫﺎﺳﺖ ﻫﺎي .netﻫﺴﺘﻨﺪ .
ﭘﻲ اچ ﭘﻲ ﺑﺮ روي ﺗﻤﺎﻣﻲ ﭘﻠﺘﻔﻮرم ﻫﺎي ﻣﻌﺮوف ﻣﺜﻞ وﻳﻨﺪوز ,ﻟﻴﻨﻮﻛﺲ ,ﻣﻚ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ .
PHPﻳﻚ زﺑﺎن ﺳﺎﺧﺖ ﻳﺎﻓﺘﻪ ﺑﻮده و ﻳﺎدﮔﻴﺮي آن ﺑﺴﻴﺎر ﺳﺎده اﺳﺖ .
اﺑﺰار ﻛﺎر ﺑﺎ PHPﻫﻤﮕﻲ اﭘﻦ ﺳﻮرس ﺑﻮده و اﺳﺘﻔﺎده از آن راﻳﮕﺎن ﻫﺴﺘﻨﺪ .
ﺳﺮﻋﺖ ﺑﺎﻻ .اﺟﺮاي ﻳﻚ اﺳﻜﺮﻳﭙﺖ PHPﺑﻪ ﻃﻮر ﻣﺘﻮﺳﻂ ﺗﺎ ﺳﻪ ﺑﺮاﺑﺮ ﻳﻚ اﺳﻜﺮﻳﭙﺖ aspاﺳﺖ .
در زﻣﺎن ﻧﻮﺷﺘﻦ اﻳﻦ ﻣﻘﺎﻟﻪ آﺧﺮﻳﻦ ﻧﺴﺨﻪ PHPﻣﻮﺟﻮد ﻧﺴﺨﻪ 5.5ﻣﻲ ﺑﺎﺷﺪ .در ﻛﻨﺎر ﻧﺴﺨﻪ 5ﭘﻲ اچ ﭘﻲ ﻳﻚ
ﻧﺴﺨﻪ اﺻﻠﻲ دﻳﮕﺮ در ﺣﺎل ﺗﻮﺳﻌﻪ اﺳﺖ .ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻐﻴﻴﺮات ﻋﻤﺪه ﻣﻮﺟﻮد در اﻳﻦ ﻧﺴﺨﻪ از ﺟﻤﻠﻪ ﭘﺸﺘﻴﺒﺎﻧﻲ
ﻛﺎﻣﻞ از ﻳﻮﻧﻴﻜﺪ ﺑﻮد ﻛﻪ ﻗﺮار ﺑﻮد اﻳﻦ ﻧﺴﺨﻪ ﺑﻪ ﻋﻨﻮان ﻧﺴﺨﻪ 6ﭘﻲ اچ ﭘﻲ ﻣﻨﺘﺸﺮ ﺷﻮد .اﻣﺎ ﭘﻴﺎده ﺳﺎزي
ﭘﺸﺘﻴﺒﺎﻧﻲ از ﻳﻮﻧﻴﻜﺪ ﺑﻴﺶ از آﻧﭽﻪ اﻧﺘﻈﺎر ﻣﻲ رﻓﺖ ﺑﻪ ﻃﻮل اﻧﺠﺎﻣﻴﺪ اﻳﻦ اﻣﺮ ﺑﺎﻋﺚ ﺷﺪه ﺗﺎ در ﺳﺎل 2010
اﻳﻦ ﻧﺴﺨﻪ ﺑﻪ ﺑﺨﺶ در ﺣﺎل ﺗﻮﺳﻌﻪ ﻣﻨﺘﻘﻞ ﺷﻮد و دﻳﮕﺮ ﺑﻪ آن ﻧﺴﺨﻪ 6ﮔﻔﺘﻪ ﻧﻤﻲ ﺷﻮد .ﻣﻔﺴﺮ PHPﺗﻨﻬﺎ
ﻛﺪ ﻫﺎﻳﻲ ﻛﻪ در درون ﺟﺪا ﻛﻨﻨﺪه ﻫﺎي PHPﻗﺮار ﺑﮕﻴﺮﻧﺪ را ﺗﻔﺴﻴﺮ ﻣﻴﻜﻨﻨﺪ ,ﻣﻌﺮف ﺗﺮﻳﻦ اﻳﻦ ﺟﺪا ﻛﻨﻨﺪ ﻫﺎ
<?PHPﺑﺮاي اﺑﺘﺪا و >? ﺑﺮاي اﻧﺘﻬﺎ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮﻧﺪ .ﻧﺎم ﻣﺘﻐﻴﻴﺮ در زﺑﺎن PHPﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ﻧﻤﺎد $آﻏﺎز
ﺷﻮد و ﻧﻴﺎزي ﺑﻪ ﻣﺸﺨﺺ ﻛﺮدن آن ﻧﻴﺴﺖ .ﺑﺮ ﺧﻼف ﻧﺎم ﺗﻮاﺑﻊ و ﻛﻼس ﻫﺎ ﻧﺎم ﻣﺘﻐﻴﻴﺮ ﻫﺎ ﺑﻪ ﺑﺰرﮔﻲ و ﻛﻮﭼﻜﻲ
ﺣﺮوف ﺣﺴﺎس ﻫﺴﺘﻨﺪ .ﺧﻄﻮط ﺟﺪﻳﺪ و ﻓﺎﺻﻠﻪ ﻧﺎدﻳﺪه ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﻧﺪ اﻟﺒﺘﻪ ﺑﻪ ﺟﺰء ﻓﺎﺻﻠﻪ ﻫﺎﻳﻲ ﻛﻪ در
درون رﺷﺘﻪ ﻫﺎ ﻗﺮار داﺷﺘﻪ ﺑﺎﺷﺪ و ﺗﻤﺎﻣﻲ دﺳﺘﻮرات اﻳﻦ زﺑﺎن ﺑﺎ ﻋﻼﻣﺖ ﺳﻤﻲ ﻛﻮﻟﻦ );( ﭘﺎﻳﺎن ﻣﻲ ﻳﺎﺑﺪ .در
زﺑﺎن PHPﺑﻪ 3ﺻﻮرت ﻣﺘﻔﺎوت ﻣﻲ ﺗﻮان ﻛﺎﻣﻨﺖ )ﺗﻮﺿﻴﺤﺎت( ﮔﺬاﺷﺖ .
از ﻋﻼﻣﺖ //ﻳﺎ #ﺑﺮاي ﻛﺎﻣﻨﺖ ﻫﺎي ﻳﻚ ﺧﻄﻲ و از /**/ﺑﺮاي ﻛﺎﻣﻨﺖ ﻫﺎي ﭼﻨﺪ ﺧﻄﻲ ﻣﻲ ﺗﻮان اﺳﺘﻔﺎده ﻛﺮد
ﺑﻪ ﺗﺼﻮﻳﺮ زﻳﺮ دﻗﺖ ﻛﻨﻴﺪ .
3 | P a g e
زﺑﺎن PHPدر اﺑﺘﺪا ﺑﻪ ﺻﻮرت ﻳﻚ زﺑﺎن ﻣﻔﺴﺮي ﭘﻴﺎده ﺳﺎزي ﺷﺪ و اﻣﺮوزه ﻧﻴﺰ اﻳﻦ ﭘﻴﺎده ﺳﺎزي ﭘﺮ ﻛﺎرﺑﺮد
ﺗﺮﻳﻦ ﻧﺴﺨﻪ ﻣﻮرد اﺳﺘﻔﺎده اﺳﺖ .ﺗﻌﺪادي ﻣﺘﺮﺟﻢ ﻧﻴﺰ ﺑﺮاي اﻳﻦ زﺑﺎن اﻳﺠﺎد ﺷﺪه اﺳﺖ ﻛﻪ اﻳﻦ زﺑﺎن را از
ﻣﻔﺴﺮ ﻫﺎ دور ﻣﻲ ﻛﻨﺪ .
ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ و اﺳﺘﻔﺎده از PHPﺑﻪ 3ﭼﻴﺰ ﻛﻠﻲ ﻧﻴﺎز اﺳﺖ :
ﺑﺮﻧﺎﻣﻪ ي ﻳﺎ اﺑﺰاري ﺑﺮاي ﻛﺪ ﻧﻮﻳﺴﻲ :در ﺳﺎده ﺗﺮﻳﻦ ﺣﺎﻟﺖ ﻣﻲ ﺗﻮاﻧﻴﺪ از ﺑﺮﻧﺎﻣﻪ Notepadﺑﺮاي ﻛﺪ
ﻧﻮﻳﺴﻲ اﺳﺘﻔﺎده ﻛﻨﻴﺪ .اﻣﺎ ﻧﺮم اﻓﺰار ﻫﺎي ﺣﺮﻓﻪ اي ﻣﺎﻧﻨﺪ NuSphere PhpED , Dreamweaverو
NetBeansو ...ﻫﺴﺘﻨﺪ ﻛﻪ در اﻳﻦ آﻣﻮزش از ﻧﺮم اﻓﺰار Dreamweaverاﺳﺘﻔﺎده ﺷﺪه اﺳﺖ .
ﻣﺮورﮔﺮ وب :ﺑﺮاي ﻣﺸﺎﻫﺪه ﺻﻔﺤﺎت ﻧﻴﺎز ﺑﻪ ﻳﻚ ﻣﺮورﮔﺮ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ اﻟﺒﺘﻪ ﻣﻲ ﺷﻮد از ﻣﺮورﮔﺮ ﭘﻴﺶ
ﻓﺮض اﺳﺘﻔﺎده ﻛﺮد وﻟﻲ ﭘﻴﺸﻨﻬﺎد ﻣﻲ ﺷﻮد از ﻣﺮورﮔﺮ Firefoxاﺳﺘﻔﺎده ﺷﻮد .
ﺳﺮور اﺟﺮا ﻛﻨﻨﺪه : PHPﭼﻨﺎﻧﭽﻪ ﺑﺨﻮاﻫﻴﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎ و ﺻﻔﺤﺎت PHPرا ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺧﻮد اﺟﺮا
ﻛﻨﻴﺪ ﻧﻴﺎز ﺑﻪ ﻧﺼﺐ PHPو MySqlﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻣﻲ ﺗﻮان آن ﻫﺎ را ﺑﻪ ﺻﻮرت ﺗﻜﻲ داﻧﻠﻮد و ﻧﺼﺐ ﻛﺮد وﻟﻲ
دو ﺑﺮﻧﺎﻣﻪ وﺟﻮد دارﻧﺪ ﻛﻪ ﻧﻘﺶ وب ﺳﺮور را اﻳﻔﺎ ﻣﻲ ﻛﻨﻨﺪ و ﻫﻤﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎ و ﻛﺘﺎﺑﺨﺎﻧﻪ ﻫﺎي ﻣﻮرد ﻧﻴﺎز را
دارا ﻣﻲ ﺑﺎﺷﻨﺪ WampServer :و XamppServerﻛﻪ در اﻳﻦ آﻣﻮزش از Wampاﺳﺘﻔﺎده ﺷﺪه اﺳﺖ .
ﻛﻪ ﻣﻲ ﺗﻮاﻧﻴﺪ اﻳﻦ ﺑﺮﻧﺎﻣﻪ رو از ﺳﺎﻳﺖ ﺧﻮدش ﻳﻌﻨﻲ www.wampserver.comداﻧﻠﻮد ﻛﻨﻴﺪ .
4 | P a g e
وﻗﺘﻲ اﻳﻦ ﺑﺮﻧﺎﻣﻪ رو داﻧﻠﻮد ﻧﻤﻮدﻳﺪ و ﻓﺎﻳﻞ آن را اﺟﺮا ﻛﻨﻴﺪ ﺻﻔﺤﻪ اﻳﻲ ﻣﺎﻧﻨﺪ ﺻﻔﺤﻪ زﻳﺮ ﻧﻤﺎﻳﺎن ﻣﻲ ﺷﻮد .
در اﻳﻦ ﺻﻔﺤﻪ ﺑﺮ روي دﻛﻤﻪ Nextﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ .در ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﺗﺼﻮﻳﺮ زﻳﺮ ﻧﻤﺎﻳﺎن ﻣﻲ ﺷﻮد .
در اﻳﻦ ﻣﺮﺣﻠﻪ روي ﮔﺰﻳﻨﻪ اﻳﻲ ﻛﻪ ﺑﺎ ﻓﻠﺶ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ﻛﻠﻴﻚ ﻛﺮده وﺳﭙﺲ دﻛﻤﻪ Nextرا ﺑﺰﻧﻴﺪ.
5 | P a g e
در اﻳﻦ ﻣﺮﺣﻠﻪ آدرس را ﺗﻐﻴﻴﺮ ﻧﺪﻫﻴﺪ و ﺑﺮ روي دﻛﻤﻪ Nextﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ .
در اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﺮ روي ﻫﺮ دوي ﭼﻚ ﺑﺎﻛﺲ ﻫﺎ ﻛﻠﻴﻚ ﻛﺮده و در ﻧﻬﺎﻳﺖ ﺑﺮ روي ﮔﺰﻳﻨﻪ Nextﻛﻠﻴﻚ ﻛﺮده .
6 | P a g e
در اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﺮ روي ﮔﺰﻳﻨﻪ ي Installﻛﻠﻴﻚ رده و ﺻﺒﺮ ﻧﻤﺎﻳﻴﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﻧﺼﺐ ﺷﻮد .
در اﻳﻦ ﻣﺮﺣﻠﻪ ﻧﺼﺐ ﭘﺎﻳﺎن ﻳﺎﻓﺘﻪ و ﭘﻨﺠﺮه اﻳﻲ ﺑﺎز ﻣﻲ ﺷﻮد ﻛﻪ در ﺗﺼﻮﻳﺮ ﺑﺎﻻ ﻣﺸﺨﺺ ﻣﻲ ﺑﺎﺷﺪ .ﻓﻘﻂ ﻛﺎﻓﻲ
اﺳﺖ روي دﻛﻤﻪ Openﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ .
7 | P a g e
در اﻳﻦ ﻣﺮﺣﻠﻪ ﻧﺒﺎﻳﺪ ﺑﻪ ﻣﺘﻐﻴﻴﺮ ﻫﺎي ﺑﺎﻻ دﺳﺖ زد و ﻓﻘﻂ ﻛﺎﻓﻲ اﺳﺖ روي دﻛﻤﻪ Nextﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ .
اﻳﻦ آﺧﺮﻳﻦ ﻣﺤﻠﻪ ﻧﺼﺐ ﻣﻲ ﺑﺎﺷﺪ و ﻓﻘﻂ ﻛﺎﻓﻲ اﺳﺖ روي دﻛﻤﻪ Finishﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ .ﺑﻌﺪ از ﻛﻠﻴﻚ ﺑﺮﻧﺎﻣﻪ
ﺧﻮدش اﺟﺮا ﻣﻲ ﺷﻮد .و در ﻛﻨﺎر ﺳﺎﻋﺖ وﻳﻨﺪوز ﻇﺎﻫﺮ ﻣﻲ ﺷﻮد .ﺗﺼﻮﻳﺮ اﻳﻦ ﻧﺮم اﻓﺰار 3ﺣﺎﻟﺖ دارد اﮔﺮ
8 | P a g e
ﻗﺮﻣﺰ ﺑﺎﺷﺪ ﻧﻤﻲ ﺗﻮاﻧﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻛﺮد ,اﮔﺮ زرد ﺑﺎﺷﺪ ﺑﻌﻀﻲ از ﻗﺎﺑﻠﻴﺖ ﻫﺎي آن اﺟﺮا ﻣﻲ ﺷﻮد وﻟﻲ وﻗﺘﻲ
ﺳﺒﺰ ﺑﺎﺷﺪ ﺗﻤﺎم ﻗﺎﺑﻠﻴﺖ ﻫﺎي آن را ﻣﻲ ﺗﻮان اﺳﺘﻔﺎده ﻛﺮد .
ﺧﺐ ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ PHPاﺑﺘﺪا ﺑﻌﺪ اﻳﻨﻜﻪ ﺑﺮﻧﺎﻣﻪ WampServerرا ﻧﺼﺐ و اﺟﺮا ﻛﺮدﻳﻢ ﺑﺎﻳﺪ ﺑﺮﻧﺎﻣﻪ
ﺧﻮد را ﺑﻨﻮﻳﺴﻴﻢ و ﺑﻌﺪ اﻳﻨﻜﻪ ﺑﺮﻧﺎﻣﻪ را ﻧﻮﺷﺘﻴﻢ آن ﺑﺮﻧﺎﻣﻪ را ذﺧﻴﺮه و در ﻣﺴﻴﺮ زﻳﺮ ﻗﺮار دﻫﻴﻢ ﺗﺎ ﺑﺘﻮان
آن را اﺟﺮا ﻛﺮد .
در ﺗﺼﻮﻳﺮ ﺑﺎﻻ ﻣﺴﻴﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ اﻳﻦ ﻣﺴﻴﺮ در داﺧﻞ دراﻳﻮ cو درون ﭘﻮﺷﻪ wampو دوﺑﺎره
درون ﭘﻮﺷﻪ wwwﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻣﺎ ﺑﺎﻳﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺧﻮد را در اﻳﻨﺠﺎ ذﺧﻴﺮه ﻛﻨﻴﻢ .ﺑﻌﺪ از ذﺧﻴﺮه ﻛﺮدن ﻓﺎﻳﻞ
درون اﻳﻦ آدرس اﺑﺘﺪا ﻣﺮورﮔﺮ را ﺑﺎز ﻛﺮده و ﻋﺒﺎرت localhostرا ﻣﻲ ﻧﻮﻳﺴﻴﻢ اﻳﻦ آدرس ﺻﻔﺤﻪ index
ﻣﺎ ﻣﻲ ﺑﺎﺷﺪ .ﻓﺮض ﻛﻨﻴﺪ ﻣﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ اﻳﻢ ﻛﻪ اي ﺑﺮﻧﺎﻣﻪ را ﺑﻪ اﺳﻤﻪ test.phpدر ﻣﺴﻴﺮي ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ
ذﺧﻴﺮه ﻛﺮده اﻳﻢ ﺑﺮاي اﺟﺮا اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ آدرس localhost/test.phpرا درون ﻣﺮورﮔﺮ وارد ﻛﻨﻴﻢ .ﺑﻪ
ﺗﺼﻮﻳﺮ زﻳﺮ ﻧﮕﺎه ﻛﻨﻴﺪ .
9 | P a g e
ﺑﺎ اﻳﻨﮕﻮﻧﻪ آدرس دﻫﻲ ﻣﻲ ﺗﻮان ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻧﻮﺷﺘﻪ ﺷﺪه را اﺟﺮا ﻧﻤﻮد .
ﺑﺮاي ﻛﺎر ﺑﺎ ﭘﺎﻳﮕﺎه داده MySqlﺑﺎﻳﺪ آدرس زﻳﺮ را در ﻣﺮورﮔﺮ وارد ﻛﻨﻴﺪ localhost/phpmyadmin/ :
ﺑﺎ وارد ﻛﺮدن اﻳﻦ آدرس ﺗﺼﻮﻳﺮ زﻳﺮ ﻧﻤﺎﻳﺎن ﻣﻲ ﺷﻮد .
ﻳﻮزر ﭘﻴﺸﻔﺮض ﭘﺎﻳﮕﺎه داده rootﻣﻲ ﺑﺎﺷﺪ و رﻣﺰ ﻋﺒﻮر ﭘﻴﺶ ﻓﺮض ﻫﻢ دارا ﻧﻤﻲ ﺑﺎﺷﺪ .ﺑﺮاي ورود روي
دﻛﻤﻪ Goﻛﻠﻴﻚ ﻛﻨﻴﺪ ﺗﺎ وارد ﺷﻮﻳﺪ و ﭘﺎﻳﮕﺎه داده ﻣﻮرد ﻧﻈﺮ ﺧﻮد را ﻃﺮاﺣﻲ ﻛﻨﻴﺪ ﻳﺎ ﺑﺎ دﻳﺘﺎﺑﺲ ﻣﻮرد ﻧﻈﺮ ﻛﺎر
ﻛﻨﻴﺪ ﻛﻪ در اﻳﻦ آﻣﻮزش ﻣﺒﺤﺚ ﻛﺎر ﺑﺎ MySqlﻣﺪ ﻧﻈﺮ ﻣﺎ ﻧﻴﺴﺖ .
10 | P a g e
ﺑﺮﻧﺎﻣﻪ Dreamweaverرا ﻧﺼﺐ ﻧﻤﺎﻳﻴﺪ .ﺑﻌﺪ از ﻧﺼﺐ آن را اﺟﺮا ﻧﻤﺎﻳﻴﺪ .در ﺻﻔﺤﻪ ورود آن زﺑﺎن PHPرا
ﻣﺎﻧﻨﺪ ﺗﺼﻮﻳﺮ زﻳﺮ اﻧﺘﺨﺎب ﻧﻤﺎﻳﻴﺪ .
ﺑﻌﺪ از اﻧﺘﺨﺎي زﺑﺎن PHPﺻﻔﺤﻪ اﻳﻲ ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ ﺑﺎز ﻣﻲ ﺷﻮد ﻛﻪ ﻣﻲ ﺗﻮاﻧﻴﻢ ﻛﺪ ﻫﺎي PHPﺧﻮد را در آن
ﺑﻨﻮﻳﺴﻴﻢ و ﺑﻌﺪ در ﻣﺴﻴﺮ ﮔﻔﺘﻪ ﺷﺪه ذﺧﻴﺮه ﻧﺎﻣﻴﻴﺪ .
11 | P a g e
ﻓﺼﻞ اول
دﺳﺘﻮر Printو Echo
در ﻣﻘﺪﻣﻪ ﺧﻮاﻧﺪﻳﻢ ﻛﻪ ﻛﺪ ﻫﺎي PHPﭼﮕﻮﻧﻪ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد و ﺑﺎ ﺗﮓ ﻫﺎي آﻏﺎز و ﭘﺎﻳﺎن آن آﺷﻨﺎ ﺷﺪﻳﻢ وﻟﻲ
ﺣﺎﻻ ﻣﻴﺨﻮاﻫﻴﻢ ﺑﺎ ﭼﻜﻮﻧﮕﻲ ﭼﺎپ ﻛﺮدن ﻣﺘﻦ ﻣﻮرد ﻧﻈﺮ ﺧﻮد در ﺻﻔﺤﻪ را ﺑﻴﺎﻣﻮزﻳﻢ ,ﺑﺮاي اﻳﻦ ﻛﺎر از دو دﺳﺘﻮر
زﻳﺮ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﻫﺮ ﻛﺪام رو ﺑﺎ ﺗﻮﺿﻴﺤﺎت ﻛﺎﻣﻞ ﻣﻌﺮﻓﻲ ﻣﻴﻜﻨﻢ .
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﺑﺎﻻ دﺳﺘﻮر ”> echo “<brﺑﺮاي رﻓﺘﻦ ﺑﻪ ﺧﻂ ﺑﻌﺪي اﺳﺖ.ﺣﺎﻻ ﻓﺮق ‘ و “ رو ﻓﻬﻤﻴﺪﻳﻢ .اﻣﺎ دو ﺑﺮاي
ﭼﺎپ ﺑﺮ روي ﺻﻔﺤﻪ وب ﺑﻪ ﻛﺎر ﻣﻲ رود .دﺳﺘﻮر echoﻧﺴﺒﺖ ﺑﻪ printﺳﺮﻳﻊ ﺗﺮ اﺳﺖ و ﻫﻴﭻ ﺧﺮوﺟﻲ ﻧﺪارد
12 | P a g e
وﻟﻲ دﺳﺘﻮر printﺑﻌﺪ از ﭼﺎپ ﻋﺪد 1را ﺑﺮ ﻣﻴﮕﺮداﻧﺪ ﻛﻪ اﺧﺘﻴﺎري اﺳﺖ ﻳﻌﻨﻲ ﻧﻤﻲ ﺧﻮاﻫﺪ ﺣﺘﻤﺎ ﺧﺮوﺟﻲ
دﺳﺘﻮر printرا در ﻣﺘﻐﻴﻴﺮي ﺑﺮﻳﺰﻳﺪ.ﺑﻪ ﻣﺜﺎل ﺷﻤﺎره echo&printدر زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ.
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﺑﺎﻻ دﺳﺘﻮر ”> echo “<hrﺑﺮاي اﻧﺪاﺧﺘﻦ ﺧﻂ در ﺻﻔﺤﻪ ﻣﻲ ﺑﺎﺷﺪ .
13 | P a g e
ﻓﺼﻞ دوم
ﻣﺘﻐﻴﻴﺮ ﻫﺎ
ﻓﺮض ﻛﻨﻴﺪ ﺷﻤﺎ ﻣﻲ ﺧﻮاﻫﻴﺪ ﻳﻚ ﻣﻘﺪار ﻋﺪدي ﻳﺎ رﺷﺘﻪ اﻳﻲ ﻣﺜﻼ ﻧﻤﺮه ﻳﻪ داﻧﺸﺠﻮ ﻳﺎ اﺳﻢ ﻳﻚ داﻧﺸﺠﻮ رو
ﻧﮕﻪ دارﻳﺪ و ﺑﻌﺪ از ﻳﻚ ﺳﺮي ﻛﺎر ﻫﺎ دوﺑﺎره اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﺑﺮاي اﻳﻦ ﻛﺎر از ﻣﺘﻐﻴﻴﺮ ﻫﺎ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ و
ﻳﻚ ﻣﺘﻐﻴﻴﺮ را ﺗﻌﺮﻳﻒ ﻣﻴﻜﻨﻴﻢ.در زﺑﺎن ﻫﺎي دﻳﮕﺮ ﻣﺎﻧﻨﺪ C , C++ , C# , Pascalﻣﺎ ﻫﻨﮕﺎم ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﻴﺮ ﺑﺎﻳﺪ
ﻧﻮع آن را ﻫﻢ ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ اﻣﺎ در PHPﻧﻴﺎزي ﺑﻪ ﺗﻌﺮﻳﻒ ﻧﻮع ﻣﺘﻌﻴﻴﺮ ﻧﻤﻲ ﺑﺎﺷﺪ ﺧﻮد PHPﻧﻮع آن را ﺗﺸﺨﻴﺺ
ﻣﻲ دﻫﺪ PHP .ﺑﻪ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ ﺣﺴﺎس اﺳﺖ.ﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﻴﺮ دو ﻧﻮع ﻣﺘﻐﻴﻴﺮ ﻣﻮﺟﻮد اﺳﺖ
اوﻟﻲ ﺛﺎﺑﺖ ﻫﺎ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﻌﺪ از ﺗﻌﺮﻳﻒ آن ﻫﺎ از آن ﻫﺎ ﻓﻘﻂ اﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ و ﻣﻘﺪار آن ﻫﺎ را ﻧﻤﻲ ﺗﻮان
ﺗﻐﻴﻴﺮ داد و ﻣﻘﺪار آن ﻫﺎ ﻫﻤﻴﺸﻪ ﺛﺎﺑﺖ ﻫﺴﺘﺪ ﻧﻮع دوﻣﻲ ﻣﺘﻐﻴﻴﺮ ﻫﺎ ﻣﻌﻤﻮﻟﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﻘﺪار آن ﻫﺎ ﻣﻲ
ﺗﻮاﻧﻨﺪ در داﺧﻞ ﺑﺮﻧﺎﻣﻪ ﺗﻐﻴﻴﺮ ﻛﻨﻨﺪ .
ﻧﺎم ﻣﺘﻐﻴﻴﺮ ﻣﻲ ﺗﻮاﻧﺪ از ﺣﺮوف اﻟﻔﺒﺎي اﻧﮕﻠﻴﺴﻲ و ﺑﺰرگ و ﻛﻮﭼﻚ و ﻋﺪد و ﻋﻼﻣﺖ _ .1
) ﻫﻤﺎن ( Underlineﺗﺸﻜﻴﻞ ﺷﻮد .
ﻧﺎم ﻣﺘﻐﻴﻴﺮ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ﻳﻚ ﺣﺮف ﻳﺎ ﻋﻼﻣﺖ _ ﺷﺮوع ﺷﻮد .ﻣﺜﺎل ﻧﺎم Intnumberﺻﺤﻴﺢ و ﻧﺎم 1int .2
ﻏﻠﻂ اﺳﺖ .
ﻧﺎم ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﻧﻤﻲ ﺗﻮاﻧﺪ ﺷﺎﻣﻞ ﻓﺎﺻﻠﻪ ﺑﺎﺷﺪ . .3
ﺛﺎﺑﺖ ﻫﺎ
ﺛﺎﺑﺖ ﻫﺎ در ﻛﻞ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت ﺳﺮاﺳﺮي ﻫﺴﺘﻨﺪ و در ﺑﺮﻧﺎﻣﻪ ﺑﺎ دﺳﺘﻮر defineﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ و در
ﻧﺎم ﮔﺬاري آن ﻫﺎ ﻻزم ﻧﻴﺴﺖ ﻛﻪ ﻛﺎراﻛﺘﺮ $اول آن ﻗﺮار ﺑﮕﻴﺮد .دﺳﺘﻮر defineﺳﻪ ورودي دارد ﻛﻪ
اوﻟﻴﻦ ورودي آن ﻧﺎم ﺛﺎﺑﺖ ﻫﺴﺖ و دوﻣﻴﻦ ورودي آن ﻣﻘﺪار آن ﺛﺎﺑﺖ ﻫﺴﺖ و ورودي ﺳﻮﻣﻲ ﻛﻪ اﺧﺘﻴﺎري
ﻫﻢ ﻫﺴﺖ ﻣﻘﺪار trueﻳﺎ falseاﺳﺖ ﻛﻪ اﮔﻪ در آن trueﻗﺮار دﻫﻴﻢ ﻧﺎم ﺛﺎﺑﺖ ﻣﺎ در ﻛﻞ ﺑﺮﻧﺎﻣﻪ ﺣﺴﺎس
ﺑﻪ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ ﻧﻴﺴﺖ و ﻓﺮﻗﻲ ﻧﻤﻲ ﻛﻨﺪ ﻛﻪ در ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﺣﺮوف ﺑﺰرگ ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ ﻳﺎ ﻛﻮﭼﻚ وﻟﻲ
اﮔﺮ falseﻗﺮار دﻫﻴﻢ در ﻛﻞ ﺑﺮﻧﺎﻣﻪ ﺣﺴﺎس ﺑﻪ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ اﺳﺖ و ﻣﺎ ﺑﺎﻳﺪ در ﻛﻞ ﺑﺮﻧﺎﻣﻪ ﻧﺎم
14 | P a g e
ﺛﺎﺑﺖ را دﻗﻴﻘﺎ ﻫﻤﺎن ﻧﺎﻣﻲ ﻛﻪ در دﺳﺘﻮر defineﻧﻮﺷﺘﻴﻢ ﺑﻨﻮﻳﺴﻴﻢ ﭘﻴﺸﻔﺮض دﺳﺘﻮر defineﻛﻠﻤﻪ false
اﺳﺖ .ﺑﻪ ﻣﺜﺎل defineﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﻣﺘﻐﻴﻴﺮ ﻫﺎ
در PHPﺑﺮاي ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﻴﺮ ﺑﺎﻳﺪ از ﻛﺎراﻛﺘﺮ $اول اﺳﻢ ﻣﺘﻐﻴﻴﺮ اﺳﺘﻔﺎده ﻛﺮد ﻛﻪ ﺧﻮد PHPﻧﻮع داده اﻳﻲ
آن را ﺗﺸﺨﻴﺺ ﻣﻲ دﻫﺪ .وﻗﺘﻲ ﻣﺘﻐﻴﻴﺮي را ﺗﻌﺮﻳﻒ ﻣﻲ ﻛﻨﻴﺪ ﻣﺤﻠﻲ )ﻳﺎ ( Localاﺳﺖ اﻳﻦ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ
ﻛﻪ وﻗﺘﻲ ﻣﺘﻐﻴﻴﺮي در داﺧﻞ ﻳﻚ ﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﺷﻮد ﻓﻘﻂ در ﻫﻤﺎن ﺗﺎﺑﻊ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﻫﺴﺖ ﻧﻪ در ﻛﻞ ﺑﺮﻧﺎﻣﻪ
ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﻣﺎ در PHPﭼﻬﺎر داﻣﻨﻪ ﻛﺎرﺑﺮد ﻣﺘﻐﻴﻴﺮ دارﻳﻢ ﻛﻪ ﺑﻪ ﺷﺮح زﻳﺮ اﺳﺖ .
ﻣﺘﻐﻴﻴﺮي ﻛﻪ درون ﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد ﻓﻘﻂ ﺑﺮاي آن ﺗﺎﺑﻊ ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ و ﻣﺤﻠﻲ اﺳﺖ وﺑﻌﺪ از اﺗﻤﺎم
ﻛﺎر ﺗﺎﺑﻊ ﻣﺘﻐﻴﻴﺮ ﻫﺎي ﻣﺤﻠﻲ درون آن از درون ﺣﺎﻓﻈﻪ ﺣﺬف ﻣﻲ ﺷﻮﻧﺪ .ﺑﻪ ﻣﺜﺎل localﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ
15 | P a g e
ﻣﺜﺎل ﻳﻚ ﺗﺎﺑﻊ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ اﻟﺒﺘﻪ ﺷﻤﺎ ﻫﻨﻮز ﺑﺎ ﻧﻮﺷﺘﻦ آن آﺷﻨﺎ ﻧﺸﺪﻳﺪ ﻧﮕﺮان ﻧﺒﺎﺷﻴﺪ در ﻣﺒﺎﺣﺚ ﺑﻌﺪ
ﺑﺎ آن آﺷﻨﺎ ﻣﻲ ﺷﻮﻳﺪ .
اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺧﻄﺎ ﻣﻲ دﻫﺪ ﭼﻮن ﻣﺘﻐﻴﻴﺮ xﺑﻪ ﺻﻮرت Localاﺳﺖ و ﻧﻤﻲ ﺗﻮان ﻫﻤﻴﻨﻄﻮري درون ﺗﺎﺑﻊ از آن
اﺳﺘﻔﺎده ﻧﻤﻮد .
ﻫﺮ ﻣﺘﻐﻴﻴﺮي ﻛﻪ ﺧﺎرج از ﺗﻤﺎم ﺗﻮاﺑﻊ ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎﺷﺪ داراي داﻣﻨﻪ ﻛﺎرﺑﺮدي Globalﺧﻮاﻫﺪ ﺑﻮد .ﻣﺘﻐﻴﻴﺮ
ﻫﺎي Globalرا ﻣﻲ ﺗﻮان در ﻫﺮ ﻗﺴﻤﺖ ﺑﺮﻧﺎﻣﻪ از ﺟﻤﻠﻪ درون ﺗﻮاﺑﻊ ﺑﻄﻮر ﻣﺸﺘﺮك اﺳﺘﻔﺎده ﻛﺮد .ﺑﺮاي
اﺳﺘﻔﺎده از ﻣﺘﻐﻴﻴﺮ درون ﺗﺎﺑﻊ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي globalاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺑﻪ دو ﺻﻮرت اﺳﺖ .ﺑﻪ ﻣﺜﺎل
globalﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﻧﻮع اول
ﺧﺮوﺟﻲ
16 | P a g e
ﻧﻮع دوم ﻣﺜﺎل global2
ﺧﺮوﺟﻲ
ﮔﺎﻫﻲ ﻣﺎ ﻣﻲ ﺧﻮاﻫﻴﻢ ﺑﻌﺪ از ﺗﻤﺎم ﺷﺪن دﺳﺘﻮرات ﺗﺎﺑﻊ ﻣﺘﻐﻴﻴﺮ ﻫﺎي ﻣﺤﻠﻲ آن ﺗﺎﺑﻊ و ﻣﻘﺎدﻳﺮ درون آن ﻫﺎ از
ﺑﻴﻦ ﻧﺮوﻧﺪ ﺗﺎ ﺑﺎر دﻳﮕﺮ ﻛﻪ آن ﺗﺎﺑﻊ اﺟﺮا ﺷﺪ ﻣﻘﺎدﻳﺮ ﻗﺒﻠﻲ درون آن ﻫﺎ ﻣﺤﻔﻮظ ﻣﺎﻧﺪه ﺑﺎﺷﻨﺪ و ﺑﺘﻮان از آن ﻫﺎ
اﺳﺘﻔﺎده ﻛﺮد ﺑﺮاي اﻳﻦ ﻛﺎر وﻗﺘﻲ ﻛﻪ ﺑﺮاي اوﻟﻴﻦ ﺑﺎر ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﻴﺮ را ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ از ﻋﺒﺎرت static
اﺳﺘﻘﺎده ﻣﻴﻜﻨﻴﻢ اﻣﺎ ﻓﺮاﻣﻮش ﻧﻜﻨﻴﺪ اﻳﻦ ﻣﺘﻐﻴﻴﺮ ﻫﺎ ﻧﻴﺰ ﺑﻪ ﺻﻮرت ﻣﺤﻠﻲ ﻫﺴﺘﻨﺪ ﻳﻌﻨﻲ ﻓﻘﻂ ﺑﺮاي آن ﺗﺎﺑﻊ
ﺷﻨﺎﺧﺘﻪ ﻣﻲ ﺷﻮﻧﺪ ﺑﻪ ﻣﺜﺎل staticدﻗﺖ ﻧﻤﺎﻳﻴﺪ .
ﺧﺮوﺟﻲ
17 | P a g e
اﻳﻦ ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﻣﺤﻠﻲ اﺳﺖ ﻛﻪ ﻣﻘﺪار آن در زﻣﺎن ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ ﺑﺮاي آن ﻣﺘﻐﻴﻴﺮ ارﺳﺎل ﻣﻲ ﺷﻮد و ﻣﺤﻞ
ﺗﻌﺮﻳﻒ آن درون ﭘﺮاﻧﺘﺰ ﺟﻠﻮي ﺗﺎﺑﻊ اﺳﺖ.ﺑﻪ ﻣﺜﺎل parameterﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
18 | P a g e
ﻓﺼﻞ ﺳﻮم
اﻧﻮاع ﻣﺘﻐﻴﻴﺮ ﻫﺎ
PHPاز ﻫﺸﺖ ﻧﻮع داده اﺻﻠﻲ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﻧﻤﺎﻳﺪ ,اﻟﺒﺘﻪ ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻧﻮع داده اﻳﻲ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺲ ﻣﺸﺨﺺ ﻧﻤﻲ ﺷﻮد ﺑﻠﻜﻪ در زﻣﺎن اﺟﺮا ﺗﻮﺳﻂ ﺧﻮد PHPﻣﺸﺨﺺ ﻣﻲ ﺷﻮد .ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ
)( Var_dumpﻣﻲ ﺗﻮاﻧﻴﻢ ﻧﻮع داده اﻳﻲ ﻣﺘﻐﻴﻴﺮ را ﺑﺒﻴﻨﻴﻢ .اﻳﻦ اﻧﻮاع داده ﻋﺒﺎرﺗﻨﺪ از :
ﻧﻮع داده اﻳﻲ Booleanﺷﺎﻣﻞ دو ﻣﻘﺪار Trueو Falseاﺳﺖ و ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻜﻲ را درﻳﺎﻓﺖ ﻛﻨﺪ .
19 | P a g e
ﻳﻚ آراﻳﻪ ﺑﺪون ﻋﻨﺼﺮ
ﻳﻚ ﺷﺊ ﺑﺪون ﻣﺘﻐﻴﻴﺮ ﻋﻀﻮ
ﻣﻘﺪار وﻳﮋه Null
ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( Is_bollﻣﻲ ﺗﻮاﻧﻴﻢ ﺑﻔﻬﻤﻴﻢ ﻳﻚ ﻣﺘﻐﻴﻴﺮ از ﻧﻮع Booleanﻫﺴﺖ ﻳﺎ ﺧﻴﺮ .ﺑﻪ ﻣﺜﺎل
booleanﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
از ﻧﻮع داده اﻳﻲ ﺻﺤﻴﺢ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﻛﻨﺪ و ﺷﻤﺎ ﻣﻲ ﺗﻮاﻧﻴﺪ اﻋﺪاد ﺻﺤﻴﺢ را ﺑﻪ ﺻﻮرت دﺳﻴﻤﺎل)ﻣﺒﻨﺎي ( 10
,ﻫﮕﺰا دﺳﻴﻤﺎل )ﻣﺒﻨﺎي , ( 16اوﻛﺘﺎل )ﻣﺒﻨﺎي ( 8ﺑﻪ ﻛﺎر ﺑﺒﺮﻳﺪ اﻧﺪازه ﻧﻮع Integerﺑﻪ ﺳﺨﺖ اﻓﺰار و ﺳﻴﺴﺘﻢ
ﻋﺎﻣﻞ ﺑﺴﺘﮕﻲ دارد .
20 | P a g e
ﺑﺮاي ﻣﺜﺎل دو ﻋﺪد 123و -123ﻫﺮ دو از ﻧﻮع Integerﻫﺴﺘﻨﺪ ﺑﺮاي ﻧﻮﺷﺘﻦ اﻋﺪاد در ﻣﺒﻨﺎي 16در اﺑﺘﺪاي
ﻋﺪد ﻋﻼﻣﺖ 0xرا ﻣﻴﮕﺬارﻳﻢ ﻣﺜﻼ ﻋﺪد 123اﻳﻨﮕﻮﻧﻪ ﻣﻲ ﺷﻮد 0x123و ﺑﺮاي ﻧﻮﺷﺘﻦ اﻋﺪاد ر ﻣﺒﻨﺎي 8اﺑﺘﺪاي
ﻋﺪد 0ﻣﻴﮕﺬارﻳﻢ .
ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( Is_intﻣﻲ ﺗﻮاﻧﻴﻢ ﺑﻔﻬﻤﻴﻢ ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ از ﻧﻮع Integerﻫﺴﺖ ﻳﺎ ﻧﻪ .ﺑﻪ ﻣﺜﺎل intﺗﻮﺟﻪ
ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
اﻳﻦ ﻧﻮع داده اﻳﻲ در PHPاز ﻧﻮع ﻋﺪدي اﻋﺸﺎري ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﻛﻨﺪ .اﻧﺪازه اﻳﻦ اﻋﺪاد ﺑﻪ ﻧﻮع ﺳﻴﺴﺘﻢ
ﻋﺎﻣﻞ و ﭘﺮدازﻧﺪه ﺑﺴﺘﮕﻲ دارد وﻟﻲ ﺣﺪاﻛﺜﺮ ﻋﺪد 1.8e308ﺑﺎ 14رﻗﻢ اﻋﺸﺎري را ﻣﻲ ﺗﻮان در ﻧﻈﺮ ﮔﺮﻓﺖ .
21 | P a g e
ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( Is_floatﻣﻲ ﺗﻮاﻧﻴﻢ ﺑﻔﻬﻤﻴﻢ ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ از ﻧﻮع Floatﻫﺴﺖ ﻳﺎ ﻧﻪ .ﺑﻪ ﻣﺜﺎل floatﺗﻮﺟﻪ
ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
رﺷﺘﻪ ﻣﺠﻤﻮﻋﻪ اﻳﻲ از ﻛﺎراﻛﺘﺮﻫﺎ ﻣﻲ ﺑﺎﺷﺪ و در PHPاز اﻳﻦ ﻧﻮع داده اﻳﻲ ﺑﺮاي ذﺧﻴﺮه رﺷﺘﻪ اﺳﺘﻔﺎده ﻣﻲ
ﺷﻮد PHPﻫﻴﭻ ﻧﻮع ﻣﺤﺪودﻳﺘﻲ در ﻃﻮل رﺷﺘﻪ اﻳﺠﺎد ﻧﻤﻲ ﻛﻨﺪ .
ﺳﺎده ﺗﺮﻳﻦ روش ﺑﺮاي اﻳﺠﺎد رﺷﺘﻪ اﺳﺘﻔﺎده از ﻛﺎراﻛﺘﺮ ﻫﺎي ﻧﻘﻞ ﻗﻮل ﺗﻜﻲ اﺳﺖ و ﻋﻴﺐ آن اﻳﻦ اﺳﺖ ﻛﻪ
در آن ﻧﻤﻲ ﺗﻮاﻧﻴﻢ از ﻣﺘﻐﻴﻴﺮ اﺳﺘﻔﺎده ﻛﻨﻴﻢ اﮔﺮ در ﻧﻮﺷﺘﻪ ﻣﺎن ﻧﻴﺎزﻣﻨﺪ اﺳﺘﻔﺎده از ﻛﺎراﻛﺘﺮ \ ﺑﺎﺷﻴﻢ ﻣﻴﺘﻮاﻧﻴﻢ
آن را ﻳﻚ ﺑﺎر ﻳﺎ دوﺑﺎر ﺑﻨﻮﻳﺴﻴﻢ در ﻫﺮ ﺻﻮرت PHPﺑﺮاي ﻣﺎ ﻛﺎراﻛﺘﺮ \ را ﻳﻜﺒﺎر ﭼﺎپ ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻣﺜﺎل string
ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
22 | P a g e
ﺧﺮوﺟﻲ
ﻳﻜﻲ دﻳﮕﺮ از روش ﻫﺎي اﻳﺠﺎد رﺷﺘﻪ اﺳﺘﻔﺎده از ﻛﺎراﻛﺘﺮﻫﺎي ﻧﻘﻞ ﻗﻮل ﺟﻔﺘﻲ اﺳﺖ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از آن ﻣﺎ
دﻳﮕﺮ ﻣﺸﻜﻞ ﻛﺎراﻛﺘﺮ ﻧﻘﻞ ﻗﻮﻟﻲ ﺗﻜﻲ را ﻧﺪارﻳﻢ و ﻣﻴﺘﻮاﻧﻴﻢ از ﻣﺘﻐﻴﻴﺮ در آن اﺳﺘﻔﺎده ﻛﻨﻴﻢ در اﻳﻦ ﺣﺎﻟﺖ ﻧﻴﺰ
ﻣﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ از ﻛﺪﻫﺎي وﻳﮋه اﻳﻲ ﺑﺮاي ﺗﻮﻟﻴﺪ ﻛﺎراﻛﺘﺮ ﻫﺎي ﺧﺎص اﺳﺘﻔﺎده ﻛﻨﻴﻢ .ﺑﻪ ﺟﺪول زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
23 | P a g e
ﺑﻪ ﻣﺜﺎل string2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﻳﻜﻲ دﻳﮕﺮ از روش ﻫﺎي اﻳﺠﺎد رﺷﺘﻪ در PHPاﺳﺘﻔﺎده از ﻫﺮدوك اﺳﺖ .اﻳﻦ روش ﺑﺮاي اﻳﺠﺎد رﺷﺘﻪ ﻫﺎي
ﻃﻮﻻﻧﻲ اﺳﺖ در اﻳﻦ روش ﺑﺮاي اﻳﺠﺎد رﺷﺘﻪ ﺑﺎﻳﺪ ﻣﺮاﺣﻞ زﻳﺮ را ﻃﻲ ﻛﺮد
اﺑﺘﺪا ﻛﺎراﻛﺘﺮﻫﺎي <<< را ﻧﻮﺷﺘﻪ و ﻳﻚ ﺷﻨﺎﺳﻪ دﻟﺨﻮاه را ذﻛﺮ ﻛﻨﻴﺪ
رﺷﺘﻪ ﻣﻮرد ﻧﻈﺮ را ﺑﻨﻮﻳﺴﻴﺪ
ﺷﻨﺎﺳﻪ اﺳﺘﻔﺎده ﺷﺪه در اﺑﺘﺪاي رﺷﺘﻪ را ﻧﻴﺰ ﺑﻨﻮﻳﺴﻴﺪ
ﺑﻪ ﻣﺜﺎل string3ﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ ﻣﺜﺎل از ﺷﻨﺎﺳﻪ EODﺑﺮاي ﻣﺸﺨﺺ ﻛﺮدن اﺑﺘﺪا و اﻧﺘﻬﺎي ﻧﻮﺷﺘﻪ اﺳﺘﻔﺎده
ﺷﺪه اﺳﺖ ﻧﺎم اﻳﻦ ﺷﻨﺎﺳﻪ اﺧﺘﻴﺎري اﺳﺖ و ﻣﻲ ﺗﻮاﻧﺪ ﻫﺮ ﻧﺎم دﻳﮕﻴﺮي ﺑﺎﺷﺪ وﻟﻲ ﻧﺒﺎﻳﺪ در ﻣﺘﻦ اﺻﻠﻲ ﺑﺎﺷﺪ
و از ﻗﻮاﻧﻴﻦ ﻧﺎم ﮔﺬاري ﻣﺘﻐﻴﻴﺮ ﻫﺎ ﭘﻴﺮوي ﻣﻲ ﻛﻨﺪ .
ﺧﺮوﺟﻲ
24 | P a g e
ﻧﻮع داده اﻳﻲ Array
ﺗﺎ ﻛﻨﻮن ﺑﺎ ﻣﺘﻐﻴﻴﺮ ﻫﺎ و ﻧﻘﺶ آﻧﻬﺎ در PHPآﺷﻨﺎ ﺷﺪﻳﺪ ,ﻫﻤﺎن ﮔﻮﻧﻪ ﻛﻪ دﻳﺪﻳﺪ ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﺗﻨﻬﺎ ﻗﺎﺑﻠﻴﺖ ذﺧﻴﺮه
ﻳﻚ ﻣﻘﺪار را دارا ﻣﻲ ﺑﺎﺷﺪ وﻟﻲ در ﻣﻘﺎﻳﺴﻪ آراﻳﻪ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ ﭼﻨﺪﻳﻦ ﻣﻘﺪار را در ﺧﻮد ذﺧﻴﺮه ﻛﻨﻨﺪ .ﻳﻪ
آراﻳﻪ داراي ﭼﻨﺪ ﻋﻨﺼﺮ اﺳﺖ ﻫﺮ ﻋﻨﺼﺮ داراي ﻳﻚ ﻣﻘﺪار اﺳﺖ .در PHPﻫﺮ آراﻳﻪ ﺑﻪ دو دﺳﺘﻪ آراﻳﻪ ﻫﺎي
اﻳﻨﺪﻛﺲ دار و آراﻳﻪ ﻫﺎي اﻧﺠﻤﻨﻲ ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﻧﺪ اﻳﻦ دو ﻧﻮع در آراﻳﻪ در روش دﺳﺘﺮﺳﻲ ﺑﻪ ﻋﻨﺎﺻﺮﺷﺎن
ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ .
در آراﻳﻪ اﻳﻨﺪﻛﺲ دار ﻫﺮ ﻳﻚ از ﻋﻨﺎﺻﺮ آراﻳﻪ ﺑﺮ اﺳﺎس اﻳﻨﺪﻛﺲ ﻣﻮرد دﺳﺘﺮﺳﻲ ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ ﻛﻪ ﺑﻪ
ﺻﻮرت ﭘﻴﺸﻔﺮض ﻋﺪد ﺻﺤﻴﺢ اﺳﺖ و از ﺻﻔﺮ ﺷﺮوع ﻣﻲ ﺷﻮد ﺑﻪ ﻣﺜﺎل arrayﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
آراﻳﻪ اﻧﺠﻤﻨﻲ در PHPﻣﺠﻤﻮﻋﻪ اﻳﻲ ﻣﺮﺗﺐ از ﻧﮕﺎﺷﺖ ﻫﺎ ﻣﻲ ﺑﺎﺷﺪ ,در ﻳﻚ ﻧﮕﺎﺷﺖ ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﻫﺮ
ﻳﻚ از ﻣﻘﺎدﻳﺮ ذﺧﻴﺮه ﺷﺪه در آراﻳﻪ ﻳﻚ ﻛﻠﻴﺪ دﻟﺨﻮاه اﻧﺘﺴﺎب داده ﻣﻲ ﺷﻮد .از اﻳﻦ ﻧﻮع آراﻳﻪ ﻣﻲ ﺗﻮان
ﺑﻪ ﺻﻮرت آراﻳﻪ ﻋﺎدي ,ﻟﻐﺖ ﻧﺎﻣﻪ ,ﭘﺸﺘﻪ ,ﺻﻒ ... ,اﺳﺘﻔﺎده ﻛﺮد ﺑﻪ ﻣﺜﺎل array2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
25 | P a g e
ﺧﺮوﺟﻲ
ﻣﺘﻐﻴﻴﺮ ﻫﺎﻳﻲ ﻛﻪ در داﺧﻞ ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮد ﺑﻪ ﻣﺜﺎل objectﺗﻮﺟﻪ ﻛﻨﻴﺪ .
در اﻳﻦ ﻣﺜﺎل ﻛﻼﺳﻲ ﺑﻪ اﺳﻢ carﺗﻌﺮﻳﻒ ﺷﺪه ﻛﻪ در آن ﻣﺘﻐﻴﻴﺮه colorﻳﻪ ﻣﺘﻐﻴﻴﺮ از ﻧﻮع objectاﺳﺖ .
26 | P a g e
ﻧﻮع داده اﻳﻲ NULL
اﻳﻦ ﻧﻮع داده اﻳﻲ ﻣﺨﺼﻮص ﻣﻲ ﺑﺎﺷﺪ و ﺗﻨﻬﺎ ﻳﻚ ﻣﻘﺪار ﻳﻌﻨﻲ NULLرا ﻣﻲ ﮔﻴﺮد NULL .ﻣﺸﺨﺺ ﻣﻴﻜﻨﻨﺪ ﻛﻪ
ﻣﺘﻐﻴﻴﺮ داراي ﻣﻘﺪار ﻧﻤﻲ ﺑﺎﺷﺪ ,ﻳﻚ ﻣﺘﻐﻴﻴﺮ در ﺻﻮرﺗﻲ NULLﺑﻪ ﺣﺴﺎب ﻣﻲ آﻳﺪ ﻛﻪ ﻳﻜﻲ از ﺷﺮاﻳﻂ زﻳﺮ را
دارا ﺑﺎﺷﺪ :
ﺧﺮوﺟﻲ
27 | P a g e
ﻓﺼﻞ ﭼﻬﺎرم
ﺗﻮاﺑﻊ ﻛﺎر ﺑﺎ رﺷﺘﻪ
ﻣﻌﺮﻓﻲ ﭼﻨﺪ ﺗﺎﺑﻊ ﻛﻪ ﻣﺨﺼﻮص ﻛﺎر ﺑﺎ رﺷﺘﻪ ﻣﻲ ﺑﺎﺷﻨﺪ PHP.ﺗﻮاﺑﻊ زﻳﺎدي ﺑﺮاي ﻛﺎر ﺑﺎ رﺷﺘﻪ دارد .
ﺗﺎﺑﻊ )(strlen
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ورودي ﻣﻴﮕﻴﺮد و ﺗﻌﺪاد ﻛﺎراﻛﺘﺮ ﻣﻮﺟﻮد در اﻳﻦ ورودي را ﺑﻪ ﻣﺎ ﻣﻲ دﻫﺪ .ﺑﻪ ﻣﺜﺎل strlenﺗﻮﺟﻪ
ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﺗﺎﺑﻊ )( strpos
اﻳﻦ ﺗﺎﺑﻊ دو ورودي ﻣﻴﮕﻴﺮد و ورودي دوﻣﻲ را در ورودي اوﻟﻲ ﺟﺴﺘﺠﻮ ﻣﻲ ﻛﻨﺪ و ﺷﻤﺎره ﻛﺎراﻛﺘﺮ را ﺑﺮ ﻣﻲ
ﮔﺮداﻧﺪ .ﺑﻪ ﻣﺜﺎل strposﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﺗﺎﺑﻊ )(strtolower
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ورودي ﻣﻴﮕﻴﺮد و ﺗﻤﺎم ﺣﺮوف ورودي را ﺑﻪ ﺣﺮوف ﻛﻮﭼﻚ ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﺪ .ﺑﻪ ﻣﺜﺎل strtolower
ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
28 | P a g e
ﺧﺮوﺟﻲ
ﺗﺎﺑﻊ strtoupper
اﻳﻦ ﺗﺎﺑﻊ دﻗﻴﻘﺎ ﺑﺮﻋﻜﺲ ﺗﺎﺑﻊ )( strtolowerﻋﻤﻞ ﻣﻴﻜﻨﺪ و ﺗﻤﺎم ﺣﺮوف ورودي ﺧﻮد را ﺑﻪ ﺣﺮوف ﺑﺰرگ ﺗﺒﺪﻳﻞ
ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻣﺜﺎل strtoupperﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ورودي ﻣﻴﮕﺮد و ﻛﺪ اﺳﻜﻲ ﺣﺮف اول آن را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻣﺜﺎل ordﻧﻮﭼﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
29 | P a g e
ﺗﺎﺑﻊ )( trim
اﻳﻦ ﺗﺎﺑﻊ ﻓﻀﺎ ﺧﺎﻟﻲ ﺳﻤﺘﻪ ﭼﭗ و راﺳﺖ ﭘﺎراﻣﺘﺮ ورودي را ﺣﺬف ﻣﻲ ﻛﻨﺪ اﻳﻦ ﺗﺎﺑﻊ ﺑﻴﺸﺘﺮ ﻣﻮاﻗﻌﻲ ﻛﻪ ﭘﺎراﻣﺘﺮي
از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻣﻴﻜﻨﻴﻢ ﻛﺎرﺑﺮد دارد .ﺑﻪ ﻣﺜﺎل trimﺗﻮﺟﻪ ﻛﻨﻴﺪ اﺑﺘﺪا دو ورودي ﺑﻪ ﻧﺎم aو bدارﻳﻢ ﻛﻪ
داﺧﻞ آن دو ﻳﻚ ﻛﻠﻤﻪ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ وﻟﻲ در ﻣﻘﺪار aﺳﻤﺘﻪ ﭼﭗ و راﺳﺖ آن ﻓﻀﺎ ﺧﺎﻟﻲ وﺟﻮد دارد
ﺑﺨﺎﻃﺮ ﻫﻤﻴﻦ در ﺷﺮط اول )دﺳﺘﻮر ( ifﻣﻴﺒﻴﻨﻢ ﻛﻪ اﻳﻦ دو ﺑﺎ ﻫﻢ ﻓﺮق دارﻧﺪ .
ﺧﺮوﺟﻲ
اﻳﻦ ﺗﺎﺑﻊ ﻫﻤﭽﻨﻴﻦ ﻧﻴﺰ دو ﺗﺎﺑﻊ دﻳﮕﺮ ﻫﻢ دارد ﻛﻪ ﻳﻜﻲ )( ltrimﻛﻪ ﻓﻀﺎ ﺧﺎﻟﻲ ﺳﻤﺘﻪ ﭼﭗ را ﺣﺬف ﻣﻲ ﻛﻨﺪ و
ﻫﻤﭽﻨﻴﻦ ﺗﺎﺑﻊ )( rtrimﻛﻪ ﻓﻀﺎ ﺧﺎﻟﻲ ﺳﻤﺘﻪ راﺳﺖ را از ﺑﻴﻦ ﻣﻲ ﺑﺮد .
30 | P a g e
ﻓﺼﻞ ﭘﻨﺠﻢ
ﻋﻤﻠﮕﺮ ﻫﺎ
ﻛﺎر اﺻﻠﻲ ﻳﻚ ﻋﻤﻠﮕﺮ اﻧﺠﺎم ﺑﺮﺧﻲ ﻛﺎرﻫﺎ ﺑﺮ روي ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﻴﺮ اﺳﺖ .آن ﻛﺎر ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ اﺧﺘﺼﺎص ﻳﻚ
ﻣﻘﺪار ,ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﻣﻘﺪار ,ﻳﺎ ﻣﻘﺎﻳﺴﻪ دو ﻳﺎ ﭼﻨﺪ ﻣﻘﺪار ﺑﺎﺷﻨﺪ .
ﺷﻤﺎ ﻗﺒﻼ ﻳﻚ ﻋﻤﻠﮕﺮ ﺗﺨﺼﻴﺺ را ﻋﻤﻼ دﻳﺪﻳﺪ ,ﻋﻼﻣﺖ ﻣﺴﺎوي ﻋﻤﻠﮕﺮ اﺻﻠﻲ ﺗﺨﺼﻴﺺ ﻣﻲ ﺑﺎﺷﺪ .ﺑﻪ ﺟﺪول
زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﻋﻤﻠﮕﺮ ﻫﺎي رﻳﺎﺿﻲ ﺑﺴﺎدﮔﻲ ﺑﺮاي اﻧﺠﺎم وﻇﺎﻳﻒ رﻳﺎﺿﻲ ﭘﺎﻳﻪ ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﻪ ﺗﻮﺟﻪ ﻣﻘﺎﺑﻞ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
31 | P a g e
ﻋﻤﻠﻲ ﻛﻪ اﻧﺠﺎم ﻣﻲ دﻫﺪ ﻣﺜﺎل ﻋﻤﻠﮕﺮ
ﻣﻘﺎدﻳﺮ را ﺟﻤﻊ ﻣﻲ ﻛﻨﺪ ; $b=$a+3 +
ﻣﻘﺎدﻳﺮ را ﺗﻔﺮﻳﻖ ﻣﻲ ﻛﻨﺪ ;$b=$a‐3 ‐
ﻣﻘﺎدﻳﺮ را ﺿﺮب ﻣﻲ ﻛﻨﺪ ; $b=$a*3 *
ﻣﻘﺎدﻳﺮ را ﺗﻘﺴﻴﻢ ﻣﻲ ﻛﻨﺪ ; $b=$a/3 /
ﺑﺎ ﻗﻴﻤﺎﻧﺪه را ﺑﺮ ﻣﻴﮕﺮداﻧﺪ ; $b=$a%3 %
ﻣﺘﻐﻴﻴﺮ $aرا ﺑﺮﻣﻴﮕﺮداﻧﺪ و ﺳﭙﺲ ﻣﻘﺪار $aرا ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲ دﻫﺪ ; $a++ ++
ﻣﺘﻐﻴﻴﺮ $aرا ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲ دﻫﺪ و ﺳﭙﺲ ﻣﻘﺪار $aرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ ; ++$a ++
ﻣﺘﻐﻴﻴﺮ $aرا ﺑﺮﻣﻴﮕﺮداﻧﺪ و ﺳﭙﺲ ﻣﻘﺪار $aرا ﻳﻚ واﺣﺪ ﻛﺎﻫﺶ ﻣﻲ دﻫﺪ ;‐‐ $a ‐‐
ﻣﺘﻐﻴﻴﺮ $aرا ﻳﻚ واﺣﺪ ﻛﺎﻫﺶ ﻣﻲ دﻫﺪ و ﺳﭙﺲ ﻣﻘﺪار $aرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ ; ‐‐$a ‐‐
اﻳﻦ ﻋﻤﻠﮕﺮ ﻫﺎ ﺑﺮاي ﻣﻘﺎﻳﺴﻪ دو ﻣﻘﺪار ﺑﻪ ﻛﺎر ﻣﻲ روﻧﺪ .ﺑﻪ ﺟﺪول زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
32 | P a g e
ﻋﻤﻠﮕﺮ ﻫﺎي ﻣﻨﻄﻘﻲ
اﻳﻦ ﻋﻤﻠﮕﺮ ﻫﺎ ﺑﺮاي اﻧﺠﺎم ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ ﻣﺎﻧﻨﺪ andو orﺑﻪ ﻛﺎر ﻣﻲ روﻧﺪ و ﻛﺎرﺑﺮد ﮔﺴﺘﺮده اي در دﺳﺘﻮرات
ﻣﺨﺘﻠﻒ ﻳﻚ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ دارﻧﺪ .
33 | P a g e
ﻓﺼﻞ ﺷﺸﻢ
دﺳﺘﻮرات ﺷﺮﻃﻲ
زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﺎﺧﺘﺎر ﻳﺎﻓﺘﻪ داراي دﺳﺘﻮرات ﺷﺮﻃﻲ ﻣﻲ ﺑﺎﺷﻨﺪ .دﺳﺘﻮرات ﺷﺮﻃﻲ ﺑﺎ ﺑﺮﻗﺮاري
ﺷﺮط ﺧﺎﺻﻲ ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎ را اﺟﺮا ﻣﻲ ﻧﻤﺎﻳﻨﺪ PHP .دو ﻧﻮع دﺳﺘﻮر ﺷﺮﻃﻲ را اراﺋﻪ ﻣﻲ
ﻧﻤﺎﻳﺪ .
اﻳﻦ دﺳﺘﻮر ﺑﺮ اﺳﺎس ﺷﺮط ﺧﺎﺻﻲ ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮرات را اﺟﺮا ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻣﺜﺎل ifﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﻳﻚ ﺣﺎﻟﺖ ﺳﺎده ifاﺳﺖ و ﻓﻘﻂ ﻳﻚ ﺣﺎﻟﺖ دارد اﮔﺮ aﻛﻮﭼﻜﺘﺮ از bﺑﺎﺷﺪ ﻣﺘﻦ ﭼﺎپ ﻣﻲ ﺷﻮد در
ﻏﻴﺮ اﻳﻨﺼﻮرت ﻫﻴﭻ ﻣﻘﺪاري ﭼﺎپ ﻧﻤﻲ ﺷﻮد .
ﻧﻜﺘﻪ :در ifاﮔﺮ ﺷﺮط ﻣﺎ ﻳﻚ ﺧﻂ ﺑﺎﺷﺪ ﻧﻴﺎز ﺑﻪ ﺑﺎز و ﺑﺴﺘﻪ ﻛﺮدن ﺑﻼك ﻧﻴﺴﺖ و ﺑﺮاي ﺧﻮاﻧﺎﻳﻲ ﺑﺮﻧﺎﻣﻪ از ﺑﻼك
ﺑﺎز و ﺑﺴﺘﻪ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﺑﻪ ﻣﺜﺎل if2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
34 | P a g e
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﺑﺎﻻ دو ﺣﺎﻟﺖ ﺑﻴﺸﺘﺮ ﭘﻴﺶ ﻧﻤﻲ آﻳﺪ ﻳﺎ aﺑﺰﮔﺘﺮ اﺳﺖ ﻳﺎ . bدﺳﺘﻮر elseدر ifﺑﻪ ﻣﻌﻨﻲ اﮔﺮ اﺳﺖ در
ﻣﺜﺎل ﺑﺎﻻ اﮔﺮ aﻛﻮﭼﻜﺘﺮ از bﺑﺎﺷﺪ ﻣﺘﻦ اول ﭼﺎپ ﻣﻲ ﺷﻮد وﻟﻲ اﮔﺮ aﺑﺰرﮔﺘﺮ از bﺑﺎﺷﺪ ﻣﺘﻦ دوﻣﻲ ﭼﺎپ ﻣﻲ
ﺷﻮد .
دﺳﺘﻮر elseifاﻳﻦ اﻣﻜﺎن را ﻓﺮاﻫﻢ ﻣﻲ ﻛﻨﺪ ﺗﺎ در ﺻﻮرت ﻋﺪم ﺑﺮﻗﺮاري ﺷﺮط دﺳﺘﻮر ifﺷﺮط ﻫﺎي دﻳﮕﺮي
را ﺑﺮرﺳﻲ ﻛﻨﻴﻢ .ﺑﻪ ﻣﺜﺎل elseifﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﺑﺎﻻ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﺷﻮد ﻛﻪ آﻳﺎ $aﻛﻮﭼﻜﺘﺮ از $bاﺳﺖ ﻳﺎ ﻧﻪ اﮔﺮ اﻳﻦ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ ﻣﻘﺪار
ﺗﻔﺎﺿﻞ aو bرا ﭼﺎپ ﻣﻴﻜﻨﻴﻢ و اﮔﺮ ﺷﺮط درﺳﺖ ﻧﺒﺎﺷﺪ دوﺑﺎره ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ aو bﺑﺎ ﻫﻢ ﻣﺴﺎوي
ﻫﺴﺘﻨﺪ اﮔﺮ ﻣﺴﺎوي ﺑﻮدﻧﺪ ﻣﺠﻤﻮع دو را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ و اﮔﺮ ﻣﺴﺎوي ﻫﻢ ﻧﺒﻮدﻧﺪ ﺿﺮب دو ﻣﻘﺪار را ﭼﺎپ ﻣﻲ
ﻛﻨﻴﻢ .
35 | P a g e
دﺳﺘﻮر ﺷﺮﻃﻲ switch
در ﺑﻌﻀﻲ ﻣﻮاﻗﻊ ﻣﺎ ﻣﻴﺨﻮاﻫﻴﻢ ﺗﺎ ﺗﺴﺎوي ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﻴﺮ را ﺑﺎ ﻣﺠﻤﻮ ﻋﻪ اي از ﻣﻘﺎدﻳﺮ ﻣﺘﻔﺎوت ﺑﺮرﺳﻲ ﻛﻨﻴﻢ
و در ﺻﻮرت ﺗﺴﺎوي ﺑﺎ ﻣﻘﺪار ﻣﺘﻐﻴﻴﺮ ﺑﺎ ﻫﺮ ﻳﻚ از اﻳﻦ ﻣﻘﺪار ﻫﺎ ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮرات را اﺟﺮا ﻛﻨﻴﻢ ,در
اﻳﻦ ﻣﻮاﻗﻊ از دﺳﺘﻮد switchاﺳﺘﻔﺎده ﻣﻴﻜﻨﻴﻢ .دﺳﺘﻮر switchﻣﻌﺎدل ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮرات ifاﺳﺖ
ﻛﻪ ﺑﺮ روي ﻳﻚ ﺷﺮط ﻳﺎ ﻋﺒﺎرت ﻳﻜﺴﺎن اﺟﺮا ﻣﻲ ﺷﻮﻧﺪ .ﺑﻪ ﻣﺜﺎل switchﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﺑﺎﻻ دﺳﺘﻮر switchﻣﻘﺪار ﻣﺘﻐﻴﻴﺮ aرا درﻳﺎﻓﺖ ﻛﺮده و آن را ﺑﺎ ﻣﻘﺎدﻳﺮ caseﻫﺎي ﺧﻮد ﻣﻘﺎﻳﺴﻪ ﻣﻲ
ﻛﻨﺪ وﻗﺘﻲ ﻫﻴﭽﻜﺪام از caseﻫﺎي دﺳﺘﻮر Switchﺑﺎ ﻣﻘﺪار درﻳﺎﻓﺘﻲ ﻣﺴﺎوي ﻧﺒﺎﺷﺪ دﺳﺘﻮر داﺧﻞ default
اﺟﺮا ﻣﻲ ﺷﻮد .
36 | P a g e
ﻓﺼﻞ ﻫﻔﺘﻢ
ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار
ﺣﻠﻘﻪ ﻫﺎ از ﻋﻨﺎﺻﺮ اﺻﻠﻲ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﺎﺧﺘﺎر ﻳﺎﻓﺘﻪ ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﺎ ﻛﻤﻚ ﺣﻠﻘﻪ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻴﻢ ﻣﺠﻤﻮﻋﻪ اﻳﻲ
از دﺳﺘﻮرات را ﺑﻪ دﻓﻌﺎت ﻣﺸﺨﺺ ﻳﺎ ﺗﺎ ﺑﺮﻗﺮاري ﺷﺮط ﺧﺎﺻﻲ اﺟﺮا ﻧﻤﺎﺋﻴﻢ.
دﺳﺘﻮر while
دﺳﺘﻮر whileﻳﻜﻲ از دﺳﺘﻮرات ﻻزم ﺑﺮاي اﻳﺠﺎد ﺣﻠﻘﻪ ﻣﻲ ﺑﺎﺷﺪ .در ﺳﺎﺧﺘﺎر اﻳﻦ دﺳﺘﻮر از ﻳﻚ ﺷﺮط
اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد و ﺗﺎ ﺑﺮﻗﺮار ﺑﻮدن اﻳﻦ ﺷﺮط ,ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺣﻠﻘﻪ whileﺗﻜﺮار ﻣﻲ ﮔﺮدﻧﺪ .
ﺑﻪ ﻣﺜﺎل whileﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
دﺳﺘﻮر do while
دﺳﺘﻮر do whileﻣﺸﺎﺑﻪ ﺣﻠﻘﻪ whileاﺳﺖ .اﻟﺒﺘﻪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺷﺮط ﺣﻠﻘﻪ در اﻧﺘﻬﺎي ﺑﺪﻧﻪ ﺣﻠﻘﻪ ﭼﻚ
ﻣﻲ ﺷﻮد .ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ﺣﻠﻘﻪ ﺣﺪاﻗﻞ ﻳﻜﺒﺎر اﺟﺮا ﻣﻲ ﺷﻮد .ﺑﻪ ﻣﺜﺎل dowhileﺗﻮﺟﻪ ﻛﻨﻴﺪ .
37 | P a g e
ﺧﺮوﺟﻲ
دﺳﺘﻮر for
از دﺳﺘﻮر forﺑﻴﺸﺘﺮ زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺗﻌﺪاد دﻓﻌﺎت ﺗﻜﺮار را ﺑﺪاﻧﻴﻢ .اﻳﻦ ﺣﻠﻘﻪ داراي ﺳﻪ
ﻗﺴﻤﺖ اﺳﺖ .
ﻣﻘﺪار دﻫﻲ :اﻳﻦ ﻗﺴﻤﺖ ﺗﻨﻬﺎ ﻳﻜﺒﺎر در اﺑﺘﺪار اﺟﺮاي ﺣﻠﻘﻪ اﺟﺮا ﻣﻲ ﮔﺮدد و اﻏﻠﺐ ﺑﺮاي ﻣﻘﺪار دﻫﻲ اﻳﻨﺪﻛﺲ
ﺣﻠﻘﻪ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .
ﺷﺮط :ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ اﻳﻦ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ ,دﺳﺘﻮر زﻳﺮ ﺣﻠﻘﻪ forاﺟﺮا ﺧﻮاﻫﺪ ﺷﺪ .
ﮔﺎم ﺣﻠﻘﻪ :ﺑﺮاي اﻓﺰاﻳﺶ ﻳﺎ ﻛﺎﻫﺶ ﻣﻘﺪار اﻳﻨﺪﻛﺲ ﺣﻠﻘﻪ ﺑﻪ ﻛﺎر ﻣﻲ رود .
ﻻزم اﺳﺖ ﺑﺪاﻧﻴﻢ ﻛﻪ ﻫﺮ ﻛﺪام از اﻳﻦ ﻗﺴﻤﺖ ﻫﺎ اﺧﺘﻴﺎري ﻣﻲ ﺑﺎﺷﻨﺪ و در ﺻﻮرت ﻧﻴﺎز ﻣﻴﺘﻮاﻧﻴﻢ آن ﻫﺎ را
ﻧﻨﻮﻳﺴﻴﻢ و ﺟﺎي آن ﻫﺎ را ﺧﺎﻟﻲ ﺑﮕﺬارﻳﻢ .وﻟﻲ ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ اﮔﺮ ﺷﺮط ﺣﻠﻘﻪ را ﻧﻨﻮﻳﺴﻴﺪ ﺣﻠﻘﻪ
ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﻪ ﺣﻠﻘﻪ ﺑﻴﻨﻬﺎﻳﺖ ﺗﺒﺪﻳﻞ ﺧﻮاﻫﺪ ﺷﺪ .
ﺑﻪ ﻣﺜﺎل forﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ ﻣﺜﺎل اﻋﺪاد زوج ﺑﻴﻦ 0ﺗﺎ 9ﭼﺎپ ﺷﺪه اﻧﺪ .
38 | P a g e
ﺧﺮوﺟﻲ
دﺳﺘﻮر foreach
اﻳﻦ دﺳﺘﻮر در PHPﻧﺴﺨﻪ 4اراﺋﻪ ﺷﺪ و ﺑﺮاي ﻛﺎر ﺑﺎ آراﻳﻪ ﻫﺎ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﺑﻨﺎﺑﺮاﻳﻦ اﮔﺮ ﺷﻤﺎ دﺳﺘﻮر
foreachرا ﺑﺎ ﻣﺘﻐﻴﻴﺮ ﻫﺎﻳﻲ از ﻧﻮع دﻳﮕﺮي ﺑﻪ ﻛﺎر ﺑﺒﺮﻳﺪ ﻳﻚ ﺧﻄﺎ اﻳﺠﺎد ﺧﻮاﻫﺪ ﺷﺪ .ﺑﻪ ﻃﻮر ﻛﻠﻲ ﺑﻪ دو روش
از اﻳﻦ دﺳﺘﻮر ﻣﻲ ﺗﻮان اﺳﺘﻔﺎده ﻛﺮد .
در روش اول ﻳﻚ ورودي از ﺟﻨﺲ آراﻳﻪ ﺑﻪ ﺣﻠﻘﻪ ﻣﻲ دﻫﻴﻢ ﺑﻪ ﻣﺜﺎل foreachﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﻳﻚ
آراﻳﻪ اﻳﺠﺎد ﻧﻤﻮده اﻳﻢ و آن را ﺑﻪ ﺣﻠﻘﻪ foreachداده اﻳﻢ .ﺑﺮاي دادن آراﻳﻪ ﺑﻪ ﺣﻠﻘﻪ اﺑﺘﺪا ﻧﺎم آراﻳﻪ را
ﻣﻲ ﻧﻮﻳﺴﻴﻢ و ﺳﭙﺲ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي asاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ و ﺳﭙﺲ ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﺑﺮاي ذﺧﻴﺮه ﻣﻘﺎدﻳﺮ آراﻳﻪ
ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺎدﻳﺮ آراﻳﻪ از اول ﺗﺎ اﻧﺘﻬﺎ درون اﻳﻦ ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﺷﻮد .
ﺧﺮوﺟﻲ
در روش دوم دﺳﺘﻮر foreachﻳﻚ ورودي از ﺟﻨﺲ آراﻳﻪ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﺪ ﻛﻪ اﻳﻦ آراﻳﻪ از ﺟﻨﺲ آراﻳﻪ
اﻧﺠﻤﻨﻲ اﺳﺖ .
39 | P a g e
ﺑﻪ ﻣﺜﺎل foreach2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
دﺳﺘﻮر Break
ﺧﺮوﺟﻲ
40 | P a g e
دﺳﺘﻮر Continue
اﻳﻦ دﺳﺘﻮر در ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار ﺑﻪ ﻛﺎر ﻣﻲ رود و زﻣﺎﻧﻲ ﻛﻪ اﺟﺮا ﻣﻲ ﺷﻮد PHPاز ﺑﻘﻴﻪ دﺳﺘﻮرات ﺣﻠﻘﻪ ﺻﺮف
ﻧﻈﺮ ﻣﻲ ﻛﻨﺪ و ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ را ﺑﻪ اﺑﺘﺪاي ﺣﻠﻘﻪ ﻣﻨﺘﻘﻞ ﻣﻲ ﻛﻨﺪ .ﻻزم ﺑﻪ ذﻛﺮ اﺳﺖ ﻛﻪ از اﻳﻦ دﺳﺘﻮر در
دﺳﺘﻮر switchﻫﻢ ﻣﻲ ﺗﻮان اﺳﺘﻔﺎده ﻛﺮد .ﺑﻪ ﻣﺜﺎل continueﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
41 | P a g e
ﻓﺼﻞ ﻫﺸﺘﻢ
ﻧﺤﻮه اﻳﺠﺎد ﺗﻮاﺑﻊ
ﻳﻚ ﺗﺎﺑﻊ ﺑﻼﻛﻲ از ﻛﺪ ﻫﺎ اﺳﺖ ﻛﻪ ﻳﻜﺒﺎر ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ و در ﻗﺴﻤﺖ ﻫﺎي ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻣﻤﻜﻦ اﺳﺖ ﺑﻪ
دﻓﻌﺎت ﻣﺘﻌﺪد ﻓﺮاﺧﻮاﻧﻲ و اﺟﺮا ﮔﺮدد .در PHPﺗﻮاﺑﻊ ﺑﺎ دﺳﺘﻮر اﻟﻌﻤﻞ functionﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ .ﺑﻪ
ﺷﻜﻞ ﺗﻮاﺑﻊ در دﻗﺖ ﻛﻨﻴﺪ .
ﭘﺎراﻣﺘﺮ ﻫﺎ ﺑﺎ ) ( , از ﻫﻢ ﺟﺪا ﻣﻲ ﺷﻮﻧﺪ .ﺗﻮاﺑﻊ ﻣﻲ ﺗﻮاﻧﻨﺪ ﺑﺪون ورودي ﺑﺎﺷﻨﺪ .ﺑﺮاي اﺳﺘﻔﺎده از ﺗﺎﺑﻊ اﮔﺮ
درون ﺗﺎﺑﻊ از دﺳﺘﻮر returnﻛﻪ ﺟﻠﻮﺗﺮ ﺑﺎ آن آﺷﻨﺎ ﻣﻲ ﺷﻮﻳﺪ اﺳﺘﻔﺎده ﺷﺪه ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﻧﺎم ﺗﺎﺑﻊ را ﻧﻮﺷﺘﻪ و
ﻳﺎ آن را ﭼﺎپ ﻧﻤﻮد ﻳﺎ درون ﻣﺘﻐﻴﻴﺮي ذﺧﻴﺮه ﻧﻤﺎﻳﻴﺪ ﺑﻪ ﻣﺜﺎل functionﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﺗﻮاﺑﻊ ﻣﻲ ﺗﻮاﻧﻨﺪ ورودي داﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺑﻪ ﻣﺜﺎل function2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
42 | P a g e
ﺧﺮوﺟﻲ
ورودي ﺗﻮاﺑﻊ ﻣﻲ ﺗﻮاﻧﻨﺪ ﻣﻘﺪار اوﻟﻴﻪ داﺷﺘﻪ ﺑﺎﺷﻨﺪ ﺑﻪ ﻣﺜﺎل function3ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﻧﻜﺘﻪ :ﺑﻪ ﻃﻮر ﻛﻠﻲ ﻳﻚ ﺗﺎﺑﻊ ﻣﻤﻜﻦ اﺳﺖ ﻣﻘﺪاري را ﺑﺮ ﻧﮕﺮداﻧﺪ .در اﻳﻦ ﺣﺎﻟﺖ ﻣﺴﻠﻤﺎ در ﺑﺪﻧﻪ ﺗﺎﺑﻊ از دﺳﺘﻮر
returnاﺳﺘﻔﺎده ﻧﺨﻮاﻫﺪ ﺷﺪ ,در اﻏﻠﺐ ﻣﻮارد اﻳﻦ ﻧﻮع از ﺗﻮاﺑﻊ ﻧﺘﺎﺑﺞ ﺑﻪ دﺳﺖ آورده را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ از دﺳﺘﻮر returnاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ﻛﻪ ﺑﺮاي ﺑﺎزﮔﺸﺖ ﻣﻘﺪار ﺗﺎﺑﻊ اﺳﺖ ﺑﻪ ﻣﺜﺎل
returnfunctionﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
43 | P a g e
ﻣﺤﺪوده ﻣﺘﻐﻴﻴﺮ
ﻣﺘﻐﻴﻴﺮ ﻫﺎﻳﻲ ﻛﻪ در داﺧﻞ ﻳﻚ ﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﻣﺘﻐﻴﻴﺮ ﻣﺤﻠﻲ ﻫﺴﺘﻨﺪ و ﻓﻘﻂ در داﺧﻞ آن ﺗﺎﺑﻊ ﻗﺎﺑﻞ
دﺳﺘﺮس ﻫﺴﺘﻨﺪ .ﻣﺘﻐﻴﻴﺮ ﻫﺎﻳﻲ ﻛﻪ در ﺑﻴﺮون ﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﺑﻪ ﺻﻮرت ﺳﺮاﺳﺮي ﻫﺴﺘﻨﺪ و در داﺧﻞ
ﺗﺎﺑﻊ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻧﻴﺴﺘﻨﺪ ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﺑﺎ ﻣﺘﻐﻴﻴﺮ globalآﺷﻨﺎ ﺷﺪﻳﺪ ﺑﻪ ﻛﻤﻚ آن ﻣﻲ ﺗﻮان از ﻣﺘﻐﻴﻴﺮ
ﺳﺮاﺳﺮي در داﺧﻞ ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻛﺮد .
ﺗﻮاﺑﻊ ﺑﺎزﮔﺸﺘﻲ
زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ ﺧﻮدش را ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﺪ ﺗﺎﺑﻊ ﺑﻪ ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺗﺒﺪﻳﻞ ﻣﻲ ﺷﻮد .ﺑﻌﻀﻲ اوﻗﺎت ﻣﺴﺌﻠﻪ
اﻳﻲ ﻛﻪ ﺣﻞ ﻣﻲ ﻧﻤﺎﺋﻴﻢ ﺑﻪ ﻃﻮر ذاﺗﻲ ﺣﺎﻟﺖ ﺑﺎزﮔﺸﺘﻲ دارد و ﺑﺮاي ﺣﻞ ﻣﺴﺌﻠﻪ ﻻزم اﺳﺖ ﻣﺴﺌﻠﻪ ﻛﻪ ﺑﻪ واﺣﺪ
ﻫﺎي ﻛﻮﭼﻜﺘﺮي ﺷﻜﺴﺘﻪ ﺷﺪه و ﻳﻚ اﻟﮕﻮرﻳﺘﻢ ﺑﺮ روي ﺗﻤﺎﻣﻲ آﻧﻬﺎ اﻋﻤﺎل ﻣﻲ ﺷﻮد و اﻳﻦ ﻣﺴﺌﻠﻪ ﺑﻪ دﻓﻌﺎت
ﻣﺘﻌﺪد ﺗﻜﺮار ﻣﻲ ﮔﺮدد .اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﺑﺎزﮔﺸﺘﻲ در رﻳﺎﺿﻴﺎت ﻣﺘﺪاول ﻣﻲ ﺑﺎﺷﺪ .ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ ﻳﻚ
ﻧﻤﻮﻧﻪ از ﻣﺴﺎﺋﻞ ﺑﺎزﮔﺸﺘﻲ اﺳﺖ .در ﻣﺜﺎل functionbazgashtiﻳﻚ ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ
اﻳﻦ ﺗﺎﺑﻊ ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد داده ﺷﺪه را ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﺪ ﺑﻪ ﻣﺜﺎل functionbazgashtiﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
44 | P a g e
ﻓﺼﻞ ﻧﻬﻢ
آراﻳﻪ ﻫﺎي ﻓﻮق ﺳﺮاﺳﺮي
ﻣﺘﻐﻴﻴﺮ ﻫﺎي از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪه آراﻳﻪ ﻫﺎي ﻓﻮق ﺳﺮاﺳﺮي ﻫﻢ ﻧﺎﻣﻴﺪه ﻣﻲ ﺷﻮﻧﺪ زﻳﺮا ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ
ﻣﺤﺪوده و ﺑﺪون اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ﻛﻠﻴﺪي globalدر ﻫﻤﻪ ﺟﺎي ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ دﺳﺘﺮس ﻣﻲ ﺑﺎﺷﻨﺪ .ﻣﺘﻐﻴﻴﺮ
ﻫﺎي از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪه ﻣﻮﺟﻮد در زﺑﺎن PHPرا در زﻳﺮ ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﺪ ﻛﻪ در اداﻣﻪ ﻛﺎرﺑﺮد ﻣﻮارد ﻣﻬﻢ
آن ﻫﺎ را ﺗﻮﺿﻴﺢ ﻣﻲ دﻫﻴﻢ .
ﻣﺘﻐﻴﻴﺮ $GLOBALS
ﺗﻤﺎﻣﻲ ﻣﺘﻐﻴﻴﺮ ﺳﺮاﺳﺮي ﻣﻮﺟﻮد در ﻳﻚ ﺑﺮﻧﺎﻣﻪ PHPدر اﻳﻦ آراﻳﻪ ﻣﻮﺟﻮد ﻣﻲ ﺑﺎﺷﺪ .اﻟﺒﺘﻪ ﺑﻴﺸﺘﺮ ﻣﺘﻐﻴﻴﺮﻫﺎي
ﻣﻮﺟﻮد در اﻳﻦ آراﻳﻪ در ﺳﺎﻳﺮ آراﻳﻪ ﻫﺎي ﻓﻮق ﺳﺮاﺳﺮي ﻧﻴﺰ ﻣﻮﺟﻮد دارﻧﺪ .در ﻗﺴﻤﺖ ﻫﺎي ﻗﺒﻞ ﻧﺤﻮه
اﺳﺘﻔﺎده از اﻳﻦ ﻣﺘﻐﻴﻴﺮ را دﻳﺪه اﻳﺪ .
ﻣﺘﻐﻴﻴﺮ $_SERVER
ﺗﻤﺎﻣﻲ داده ﻫﺎﻳﻲ ﻛﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه در ﻳﻚ ﭘﻴﺎم ﭘﺎﺳﺦ HTTPﺑﻪ ﺳﺮوﻳﺲ ﮔﻴﺮﻧﺪه ارﺳﺎل ﻣﻲ ﻛﻨﺪ در اﻳﻦ
آراﻳﻪ ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ .اﻳﻦ اﻃﻼﻋﺎت ﻋﺒﺎرﺗﻨﺪ از :
در ﻣﺜﺎل زﻳﺮ ﭼﻨﺪ از اﻳﻦ اﻃﻼﻋﺎت ﻣﻬﻢ آورده ﺷﺪه اﺳﺖ ﺑﻪ ﻣﺜﺎل server$ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
ﻣﺘﻐﻴﻴﺮ $_REQUEST
اﻳﻦ آراﻳﻪ ﺷﺎﻣﻞ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻫﺎي $_GETو $_POSTو $_COOKIEﻣﻲ ﺑﺎﺷﺪ .در ﻣﺜﺎل زﻳﺮ ﺗﻮﺳﻂ ﻳﻚ
ﻓﺮم ورودي را از ﻛﺎرﺑﺮ ﻣﻴﮕﺮﻳﺪ و ﺑﺎ اﺳﺘﻔﺎده از آراﻳﻪ $_REQUESTﻣﻘﺪار آن را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻣﺜﺎل
request$ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
46 | P a g e
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﻓﻮق ﻳﻚ ﻓﺮم ﺑﺮاي درﻳﺎﻓﺖ ورودي از ﻛﺎرﺑﺮ اﻳﺠﺎد ﺷﺪه اﺳﺖ ﻛﻪ از ﻣﺘﺪ POSTاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﺪ
و ﺑﺎ زدن دﻛﻤﻪ Submitﻣﻘﺪار درﻳﺎﻓﺘﻲ ﻛﺎرﺑﺮ ﺑﻪ ﻫﻤﻴﻦ ﺻﻔﺤﻪ ارﺳﺎل ﻣﻲ ﺷﻮد و اﻣﺎ در ﻗﺴﻤﺖ PHPﻫﻢ
اﺑﺘﺪا ﻋﺪم وﺟﻮد ﭘﺎراﻣﺘﺮ ارﺳﺎﻟﻲ nameاﺑﺘﺪا ﭼﻚ ﻣﻲ ﺷﻮد و اﮔﺮ اﻳﻦ ﻣﺘﻐﻴﻴﺮ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه
ﺑﺎﺷﺪ آن را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
ﻣﺘﻐﻴﻴﺮ $_POST
ﻳﻜﻲ از روش ﻫﺎي ارﺳﺎل داده ﻫﺎي ﻓﺮم ﺑﻪ اﺳﻜﺮﻳﭙﺖ ﺳﺮوﻳﺲ دﻫﻨﺪه ﻣﻲ ﺑﺎﺷﺪ .زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﻓﺮم داده
ﻫﺎي ﺧﻮد را ﺑﺎ ﻣﺘﺪ POSTﺑﻪ ﻣﻘﺼﺪ ﺑﻪ ﻣﻘﺼﺪ ارﺳﺎل ﻣﻲ ﻧﻤﺎﻳﺪ آﻧﮕﺎه اﻳﻦ داده ﻫﺎ در اﺳﻜﺮﻳﭙﺖ ﻣﻘﺼﺪ ﺑﺎ
آراﻳﻪ $_POSTﻗﺎﺑﻞ دﺳﺘﺮس ﺧﻮاﻫﻨﺪ ﺑﻮد .وﻗﺘﻲ ﻛﻪ ﻓﺮم داده ﻫﺎي ﺧﻮد را ﺑﺎ اﻳﻦ روش ارﺳﺎل ﻣﻲ ﻛﻨﺪ
داده ﻫﺎ ﺑﻪ ﺻﻮرت رﻣﺰ ﻧﮕﺎري ﺷﺪه ارﺳﺎل ﻣﻲ ﺷﻮﻧﺪ و در URLﻧﻴﺰ ﻧﺸﺎن داده ﻧﻤﻲ ﺷﻮﻧﺪ و از اﻣﻨﻴﺖ ﺑﺎﻻﻳﻲ
ﻧﺴﺒﺖ ﺑﻪ ﻣﺘﺪ دﻳﮕﺮ ارﺳﺎل داده $_GETدارد .ﺑﻪ ﻣﺜﺎل post$ﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ ﻣﺜﺎل اﺑﺘﺪا ﺑﺎ ﺗﺎﺑﻊ isset
ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﻣﺘﻐﻴﻴﺮ ageﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ﺑﺎ ﻣﺘﺪ Postارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ
اﻳﻦ ﺗﺎﺑﻊ ﻣﻘﺪار trueرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﻘﺪار falseرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ و دﺳﺘﻮرات داﺧﻞ if
اﺟﺮا ﻧﻤﻲ ﺷﻮد .ﺑﺎ زدن دﻛﻤﻪ Submitﻫﺮ ﻣﻘﺪاري ﻛﻪ در ﻛﺎدر ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﺷﺪ ﭼﺎپ ﻣﻲ ﺷﻮد .
47 | P a g e
ﺧﺮوﺟﻲ
ﻣﺘﻐﻴﻴﺮ $_GET
ﻳﻜﻲ دﻳﮕﺮ از روش ﻫﺎي ارﺳﺎل داده ﻫﺎي ﻓﺮم ﺑﻪ اﺳﻜﺮﻳﭙﺖ ﺳﺮوﻳﺲ دﻫﻨﺪه ﻣﻲ ﺑﺎﺷﺪ .زﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﻓﺮم
داده ﻫﺎي ﺧﻮد را ﺑﺎ ﻣﺘﺪ GETﺑﻪ ﻣﻘﺼﺪ ارﺳﺎل ﻣﻲ ﻧﻤﺎﻳﺪ آﻧﮕﺎه اﻳﻦ داده ﻫﺎ در اﺳﻜﺮﻳﭙﺖ ﻣﻘﺼﺪ ﺑﺎ آراﻳﻪ
$_GETﻗﺎﺑﻞ دﺳﺘﺮس ﺧﻮاﻫﻨﺪ ﺑﻮد .وﻗﺘﻲ ﻛﻪ ﻓﺮم داده ﻫﺎي ﺧﻮد را ﺑﺎ اﻳﻦ روش ارﺳﺎل ﻣﻲ ﻛﻨﺪ داده ﻫﺎ
از ﻃﺮﻳﻖ URLارﺳﺎل ﻣﻲ ﺷﻮﻧﺪ و اﻣﻨﻴﺖ ﻛﻢ دارد وﻟﻲ ﺳﺮﻋﺖ آن ﻧﺴﺒﺖ ﺑﻪ ﻣﺘﺪ postﺑﻴﺸﺘﺮ ﻣﻲ ﺑﺎﺷﺪ .ﺑﻪ
ﻣﺜﺎل get$ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﺑﺎ زدن دﻛﻤﻪ Submitﻣﻲ ﺑﻴﻨﻴﺪ ﻛﻪ ﻫﺮ ﭼﻪ داﺧﻞ ﻛﺎدر ﻧﻮﺷﺘﻪ ﺷﻮد از ﻃﺮﻳﻖ Url ﺑﻪ
ﺧﻮده ﺻﻔﺤﻪ ارﺳﺎل ﻣﻲ ﺷﻮد و ﭼﺎپ ﻣﻲ ﺷﻮد .
ﺧﺮوﺟﻲ
48 | P a g e
ﻣﺘﻐﻴﻴﺮ $_COOKIE
اﻳﻦ آراﻳﻪ ﺷﺎﻣﻞ ﺗﻤﺎﻣﻲ ﻛﻮﻛﻲ ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﻣﺮورﮔﺮ وب ﺑﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه وب ارﺳﺎل ﺷﺪه اﺳﺖ
.در اﺳﻜﺮﻳﭙﺖ ﻣﻘﺼﺪ ﺑﺮاي ﺧﻮاﻧﺪن ﻛﻮﻛﻲ ﻫﺎ از اﻳﻦ آراﻳﻪ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﻛﻮﻛﻲ ﻫﺎ داده ﻫﺎي ﻛﻮﭼﻜﻲ
ﻫﺴﺘﻨﺪ ﻛﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه آن ﻫﺎ را ﺑﺎ ﻛﻤﻚ ﻣﺮورﮔﺮ وب ﺑﺮ روي ﺳﻴﺴﺘﻢ ﻛﺎرﺑﺮان ﻣﻲ ﻧﻮﻳﺴﺪ ﺗﺎ ﻛﺎرﺑﺮان
را در ﻣﺮاﺟﻌﺎت ﺑﻌﺪي ﺗﺸﺨﻴﺺ دﻫﺪ .ﺑﺮاي ﻧﻮﺷﺘﻦ ﻛﻮﻛﻲ ﻫﺎ ﺑﺮ روي ﺳﻴﺴﺘﻢ ﻛﺎرﺑﺮان ﺗﺎﺑﻊ )( setcookieﺑﻪ
ﻛﺎر ﻣﻲ رود .اﻣﺮوزه ﺑﻪ دﻟﻴﻞ اﻣﻨﻴﺖ ﻛﻢ ﻛﻮﻛﻲ از آن ﺧﻴﻠﻲ ﻛﻢ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .
در ﻣﺜﺎل زﻳﺮ ﺧﻂ اول ﺳﺎﺧﺘﺎر دﺳﺘﻮر setcookieﻧﺸﺎن داده ﺷﺪه اﺳﺖ و در ﺧﻂ ﺑﻌﺪي ﻳﻚ ﻛﻮﻛﻲ ﺑﻪ اﺳﻢ
nameو ﻣﻘﺪار آن ﻧﻴﺰ ﻣﻘﺪار ﻣﺘﻐﻴﻴﺮ $nameاﺳﺖ و زﻣﺎن اﻧﻘﻀﺎ آن زﻣﺎن ﺳﻴﺴﺘﻢ ﺑﻪ اﺿﺎﻓﻪ 3600ﺛﺎﻧﻴﻪ
اﺳﺖ ﻳﻌﻨﻲ ﻳﻚ ﺳﺎﻋﺖ .
ﺑﻪ ﻣﺜﺎل cookie$ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل در ﻗﺴﻤﺖ htmlﻳﻚ ﻓﺮم ﺑﺮاي درﻳﺎﻓﺖ ﻧﺎم ﻛﺎرﺑﺮ ﻃﺮاﺣﻲ ﺷﺪه
اﺳﺖ ﻛﻪ ﺑﺎ ﻣﺘﺪ getورودي ﻛﺎرﺑﺮ را ﺑﻪ ﻫﻤﻴﻦ ﺻﻔﺤﻪ ارﺳﺎل ﻣﻲ ﻛﻨﺪ .در ﻗﺴﻤﺖ PHPاﺑﺘﺪا ﺑﺎ ﺗﺎﺑﻊ isset
49 | P a g e
ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ورودي اﻳﻲ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه ﻳﺎ ﺧﻴﺮ .اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ورودي ﻣﻴﮕﻴﺮد اﮔﺮ ﻣﺘﻐﻴﻴﺮي
ﻛﻪ ﺑﻪ اﻳﻦ ورودي ﻣﻲ دﻫﻴﻢ ﻗﺒﻼ اﻳﺠﺎد ﺷﺪه ﺑﺎﺷﺪ ﻣﻘﺪار trueرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﻘﺪار
falseرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ .اﮔﺮ ورودي ارﺳﺎل ﺷﺪه اﺳﺖ آن را در ﻛﻮﻛﻲ ﺑﻪ ﻣﺪت اﻧﻘﻀﺎ ﻳﻚ دﻗﻴﻘﻪ ذﺧﻴﺮه ﻣﻲ
ﻛﻨﻴﻢ و اﮔﺮ ورودي ارﺳﺎل ﻧﺸﺪه ﺑﺎﺷﺪ ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﻛﻮﻛﻲ ﻛﺎرﺑﺮ ﻛﻪ ﻣﺪت اﻧﻘﻀﺎ آن ﻳﻚ دﻗﻴﻘﻪ اﺳﺖ
وﺟﻮد دارد ﻳﺎ ﺧﻴﺮ اﮔﺮ وﺟﻮد داﺷﺖ آن را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻣﺘﻐﻴﻴﺮ $_FILES
ﺷﺎﻣﻞ ﻓﺎﻳﻞ ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ ﻛﺎرﺑﺮان ﺑﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه آﭘﻠﻮد ) ارﺳﺎل ( ﻣﻲ ﻛﻨﺪ .
ﻣﺘﻐﻴﻴﺮ $_ENV
ﺷﺎﻣﻞ اﻃﻼﻋﺎﺗﻲ درﺑﺎره ﺳﺮوﻳﺲ دﻫﻨﺪه و PHPﻣﻲ ﺑﺎﺷﺪ .اﻃﻼﻋﺎﺗﻲ ﻫﻤﺎﻧﻨﺪ ﻧﺎم ﻛﺎﻣﭙﻴﻮﺗﺮ ,ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ,
دراﻳﻮ ﺳﻴﺴﺘﻢ در اﻳﻦ آراﻳﻪ ﻗﺮار ﻣﻲ ﮔﻴﺮﻧﺪ .
ﻣﺘﻐﻴﻴﺮ $_SESSION
ﺷﺎﻣﻞ ﺗﻤﺎﻣﻲ ﻣﺘﻐﻴﻴﺮ ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ ﻫﻢ اﻛﻨﻮن ﺑﻪ ﻋﻨﻮان ﻣﺘﻐﻴﻴﺮ ﺟﻠﺴﻪ ﺛﺒﺖ ﺷﺪه اﻧﺪ .ﺟﻠﺴﻪ ﻳﺎ session
ﻳﻚ از روش ﻫﺎﻳﻲ اﺳﺖ ﻛﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه وب ﺑﺮاي ﺗﺸﺨﻴﺺ و اﻫﺮاز ﻫﻮﻳﺖ ﻛﺎرﺑﺮان در ﻣﺮاﺟﻌﺎت ﻣﺨﺘﻠﻒ
ﺑﻪ ﻛﺎر ﻣﻲ رود .ﺑﺮاي ﻫﺮ ﺟﻠﺴﻪ ﻣﻲ ﺗﻮان ﺑﻪ ﺗﻌﺪاد دﻟﺨﻮاه ﻣﺘﻐﻴﻴﺮ ﻫﺎي را ﺗﻌﺮﻳﻒ ﻛﺮد ,اﻳﻦ ﻣﺘﻐﻴﻴﺮ ﻫﺎ ﺟﺰء
50 | P a g e
آراﻳﻪ ﻓﻮق ﺳﺮاﺳﺮي $_SESSIONﻣﻲ ﺷﻮﻧﺪ و در ﺟﻠﺴﻪ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻣﻲ ﺑﺎﺷﻨﺪ .ﺟﻠﺴﻪ ﺑﺎ دﺳﺘﻮر
)( session_startﺷﺮوع ﻣﻲ ﺷﻮد .ﺑﻪ ﻣﺜﺎل session$ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
در اﻳﻦ ﻣﺜﺎل ﻓﺮﻣﻲ ﺑﺮاي ورود ﻛﺎرﺑﺮ ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ و اﻣﺎ در ﻗﺴﻤﺖ PHPآن اﺑﺘﺪا ﺟﻠﺴﻪ را ﺷﺮوع ﻣﻲ
ﻛﻨﻴﻢ اﺑﺘﺪا ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ اﻃﻼﻋﺎت ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﻧﺸﺪه ﺑﺎﺷﺪ ﭼﻚ
ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﺟﻠﺴﻪ از دﻓﻌﻪ ﻗﺒﻞ وﺟﻮد دارد ﻳﺎ ﺧﻴﺮ اﮔﺮ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﻣﻘﺪار آن را ﭼﺎپ ﻣﻴﻜﻨﻴﻢ وﻟﻲ
اﮔﺮ اﻃﻼﻋﺎت ارﺳﺎل ﺷﺪه ﺑﻮد ﻳﻚ ﺟﻠﺴﻪ را ﺷﺮوع ﻣﻴﻜﻨﻴﻢ و ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﺟﻠﺴﻪ ﻣﻲ ﺳﺎزﻳﻢ و اﺳﻢ ﻛﺎرﺑﺮ را
درون آن ﻗﺮار ﻣﻲ دﻫﻴﻢ و آدرس urlﻣﺮورﮔﺮ را ﺑﻪ دوﺑﺎره ﺑﻪ ﺧﻮد اﻳﻦ ﺻﻔﺤﻪ ﻗﺮار ﻣﻲ دﻫﻴﻢ و ﺳﭙﺲ
ﻟﻴﻨﻜﻲ ﺑﺮاي ﭘﺎﻳﺎن ﺟﻠﺴﻪ و ﺧﺮوج ﻛﺎرﺑﺮ ﻗﺮار ﻣﻲ دﻫﻴﻢ ﻛﻪ اﮔﺮ ﻛﺎرﺑﺮ روي ﻟﻴﻨﻚ ﻛﻠﻴﻚ ﻛﻨﺪ ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﺑﻪ ﻧﺎم
actionرا ﺑﺎ ﻣﻘﺪار logoutﺑﻪ ﻫﻤﻴﻦ ﺻﻔﺤﻪ ﺑﺎ ﻣﺘﺪ getارﺳﺎل ﻣﻲ ﻛﻨﺪ و در ifآﺧﺮ ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﻛﺎرﺑﺮ
روي اﻳﻦ ﻟﻴﻨﻚ ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ﻛﻠﻴﻚ ﻛﺮده ﺑﺎﺷﺪ ﺟﻠﺴﻪ را ﭘﺎﻳﺎن ﻣﻴﺪﻫﻴﻢ و دوﺑﺎره ﻣﺮورﮔﺮ را
ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺟﺎع ﻣﻲ دﻫﻴﻢ .اﻳﻦ ﻣﺜﺎل درﺳﺖ ﻫﻤﺎﻧﻨﺪ ﺻﻔﺤﻪ loginﻛﺎرﺑﺮان ﻣﻲ ﺑﺎﺷﺪ .
51 | P a g e
دﺳﺘﻮر include
از اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﭘﻴﻮﺳﺖ ﻛﺮدن ﻣﺤﺘﻮﻳﺎت ﻳﻚ ﻓﺎﻳﻞ PHPدرون ﻳﻚ ﻓﺎﻳﻞ دﻳﮕﺮ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .در
اﻳﻦ ﺣﺎﻟﺖ ﺳﺮور PHPدر ﻫﻨﮕﺎم اﺟﺮاي ﺻﻔﺤﻪ ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ اﺿﺎﻓﻪ ﺷﺪه راﺧﻮاﻧﺪه و آن را ﺑﺎ ﺻﻔﺤﻪ اول
ﺗﺮﻛﻴﺐ ﻣﻲ ﻛﻨﺪ ﺳﭙﺲ ﺧﺮوﺟﻲ را در ﻗﺎﻟﺐ ﻳﻚ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﺪ .در ﺗﺼﻮﻳﺮ ﻓﻮق اﺑﺘﺪا در ﺧﻂ اول
ﻧﺤﻮه اﺳﺘﻔﺎده از دﺳﺘﻮر includeرا ﻧﺸﺎن ﻣﻲ دﻫﺪ و در ﺧﻂ دوم ﻣﻘﺪار ﻓﺎﻳﻞ menu.phpﺑﻪ اﻳﻦ ﺻﻔﺤﻪ
ﭘﻴﻮﺳﺖ ﺷﺪه اﺳﺖ .
دﺳﺘﻮر require
اﻳﻦ دﺳﺘﻮر ﻫﻤﺎﻧﻨﺪ دﺳﺘﻮر includeﻋﻤﻞ ﻣﻲ ﻛﻨﺪ و ﺑﺮاي ﭘﻴﻮﺳﺖ ﻛﺮدن ﻓﺎﻳﻞ ﺑﻪ ﻛﺎر ﻣﻲ رود اﻣﺎ اﻳﻦ دو
دﺳﺘﻮر ﺑﺎ ﻫﻢ ﺗﻔﺎوت ﻫﺎﻳﻲ دارﻧﺪ .ﺗﻔﺎوت ﺑﻴﻦ دﺳﺘﻮر include و requireاﻳﻦ اﺳﺖ ﻛﻪ اﮔﺮ ﻓﺎﻳﻞ ﻓﺮﺧﻮاﻧﻲ
ﺷﺪه وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ و ﻳﺎ ﭘﺮﻣﻴﺸﻦ ﻻزم ﺑﺮاي ﺧﻮاﻧﺪن ﻳﺎ اﺟﺮا را ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ دﺳﺘﻮر includeﻓﻘﻂ
ﻳﻪ warningﺑﺮ ﻣﻴﮕﺮداﻧﺪ و ﺑﺮﻧﺎﻣﻪ را اداﻣﻪ ﻣﻲ دﻫﺪ اﻣﺎ دﺳﺘﻮر requireﻳﻚ errorﺑﺮ ﻣﻴﮕﺮداﻧﺪ و اﺟﺮا
ﺑﺮﻧﺎﻣﻪ را ﻣﺘﻮﻗﻒ ﻣﻲ ﻛﻨﺪ .
اﻳﻦ ﺗﻔﺎوت از ﻧﻈﺮ اﻣﻨﻴﺘﻲ ﻣﻬﻢ اﺳﺖ ﻓﺮض ﻛﻨﻴﺪ ﺑﺮاي ﻣﺤﻴﻂ ادﻣﻴﻦ ﻓﺎﻳﻞ check.phpرا ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ ﻛﻨﻴﺪ
و در اﻳﻦ ﻓﺎﻳﻞ ﺻﺤﺖ ﻛﺎرﺑﺮ ﺻﻮرت ﻣﻲ ﮔﻴﺮد و اﮔﺮ ﻛﺎرﺑﺮ درﺳﺖ ﺑﺎﺷﺪ اداﻣﻪ ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﻣﻲ ﺷﻮد و ﮔﺮ ﻧﻪ
ﺑﻪ ﺻﻔﺤﻪ ﻗﺒﻞ ارﺟﺎ ﻣﻲ ﺷﻮد ﺣﺎل اﮔﺮ اﻳﻦ ﻓﺎﻳﻞ را ﺑﺎ دﺳﺘﻮر Include ﭘﻴﻮﺳﺖ ﻛﺮده ﺑﺎﺷﻴﻢ ﻳﻚ warning
رخ ﻣﻲ دﻫﺪ و ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﺤﻴﻂ اﻣﻴﻦ ﻣﻲ رود وﻟﻲ اﮔﺮ ﺑﺎ دﺳﺘﻮر requireﻓﺮاﺧﻮاﻧﻲ ﺷﻮد اﺟﺮا ﺑﺮﻧﺎﻣﻪ ﻣﺘﻮﻗﻒ
ﻣﻲ ﺷﻮد .
52 | P a g e
دﺳﺘﻮر )( include_onceو )( require_once
ﺗﺼﻮر ﻛﻨﻴﺪ در ﻓﺎﻳﻞ index.phpﻓﺎﻳﻞ xو yﭘﻴﻮﺳﺖ ﺷﺪه اﻧﺪ و درون ﻓﺎﻳﻞ xﻓﺎﻳﻞ yﭘﻴﻮﺳﺖ ﺷﺪه اﺳﺖ
در اﻳﻦ ﺻﻮرت ﺷﻤﺎ ﻓﺎﻳﻞ yرا دوﺑﺎر ﭘﻴﻮﺳﺖ ﻛﺮده اﻳﺪ .اﻳﻨﻜﺎر اﮔﺮ روال اﺟﺮا ﻛﺪ ﻫﺎ را ﺧﺮاب ﻧﻜﻨﺪ ﺑﺎﻋﺚ
ﭘﺮدازش ﺑﻴﺶ از ﺣﺪ ﻣﻲ ﺷﻮد در اﻳﻦ ﻣﻮاﻗﻊ ﺑﻬﺘﺮ اﺳﺖ از دﺳﺘﻮر include_onceو ﻳﺎ دﺳﺘﻮر
require_onceاﺳﺘﻔﺎده ﻛﻨﻴﻢ اﻳﻦ دو دﺳﺘﻮر ﻛﻤﻚ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻓﺎﻳﻞ را ﻳﻜﺒﺎر ﭘﻴﻮﺳﺖ ﻛﻨﻴﻢ اﮔﺮ ﻓﺎﻳﻠﻲ را
ﻗﺒﻼ ﻳﻜﺒﺎر ﻓﺮاﺧﻮاﻧﻲ ﻛﺮده اﻳﻢ و ﺑﻪ ﻫﺮ دﻟﻴﻠﻲ دوﺑﺎره آن را ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﻴﻢ دﻓﻌﻪ دوم ,ﺳﻮم و ..ﻓﺮاﺧﻮاﻧﻲ
ﺻﻮرت ﻧﻤﻴﮕﻴﺮد وﻃﺒﻴﻌﺘﺎ اﮔﺮ ﻗﺒﻼ ﻓﺮاﺧﻮاﻧﻲ ﻧﺸﺪه ﺑﻮد آن را ﻓﺮﺧﻮاﻧﻲ ﻣﻲ ﻛﻨﺪ .ﻓﺮق اﻳﻦ دو دﺳﺘﻮر ﻫﻢ
ﻣﺎﻧﻨﺪ اﻳﻦ دﺳﺘﻮر ﻫﺎ ﺑﺪون ﻛﻠﻤﻪ onceاﺳﺖ .
53 | P a g e
ﻓﺼﻞ دﻫﻢ
PHPو ﻛﺎر ﺑﺎ ﻓﺎﻳﻞ ﻫﺎ
PHPﻗﺎﺑﻠﻴﺖ ﺧﻮاﻧﺪن و ﻧﻮﺷﺘﻦ ﻓﺎﻳﻞ ﻫﺎي ﺳﺮوﻳﺲ دﻫﻨﺪه را دارد .ﺑﻨﺎ ﺑﺮ اﻳﻦ ﻣﻲ ﺗﻮان ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻛﺎرﺑﺮدي
ﻣﺘﻌﺪدي ر اﻧﻮﺷﺖ ﺗﺎ از ﻓﺎﻳﻞ ﺳﻴﺴﺘﻢ ﺳﺮوﻳﺲ دﻫﻨﺪه اﺳﺘﻔﺎده ﻛﺮده و ﻳﺎ ﻓﺎﻳﻞ ﻫﺎﻳﻲ را ﺑﺮ روي ﺳﺮوﻳﺲ
دﻫﻨﺪه اﻳﺠﺎد ﻳﺎ ﺗﻐﻴﻴﺮ دﻫﻨﺪ PHP .ﺑﺮ روي ﻟﻴﻨﻮﻛﺲ ﺑﻪ ﻋﻨﻮان ﻫﻤﺎن ﻛﺎرﺑﺮ ﻣﺎﻟﻚ ﺳﺮوﻳﺲ دﻫﻨﺪه آﭘﺎﭼﻲ و
ﺑﺮ روي وﻳﻨﺪوز ﺑﻪ ﻋﻨﻮان ﻛﺎرﺑﺮ ﻣﻴﻬﻤﺎن اﺟﺮا ﻣﻲ ﺷﻮد .ﺑﻪ ﻃﻮر ﻛﻠﻲ PHPﻗﺎﺑﻠﻴﺖ ﺑﺎ ﻫﺮ ﻧﻮع ﻓﺎﻳﻠﻲ را دارد
اﻣﺎ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل ﻣﺎ ﺑﺎ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻨﻲ ﻛﺎر ﺧﻮاﻫﻴﻢ ﻛﺮد .ﺳﻴﺴﺘﻢ ﻫﺎي ﻋﺎﻣﻞ وﻳﻨﺪوز و ﻟﻴﻨﻮﻛﺲ ﺗﻔﺎوت ﻫﺎي
ﻣﺘﻌﺪدي در ﻛﺎر ﺑﺎ ﻓﺎﻳﻞ ﻫﺎ دارﻧﺪ .ﻳﻜﻲ از اﻳﻦ ﺗﻔﺎوت ﻫﺎ ﺑﻪ ﻧﺤﻮه ﻣﺸﺨﺺ ﻛﺮدن ﻣﺴﻴﺮ ﻫﺎ ﻣﺮﺑﻮط ﻣﻲ ﺷﻮد .
ﺑﻪ ﻃﻮر ﻣﺜﺎل ﺑﺮاي ﻣﺸﺨﺺ ﻛﺮدن ﻣﺴﻴﺮ ﻳﻚ ﻓﺎﻳﻞ در ﻟﻴﻨﻮﻛﺲ و ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﻫﺎي ﻫﻤﺎﻧﻨﺪ ﻳﻮﻧﻴﻜﺲ از
ﻛﺎراﻛﺘﺮ /اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .در ﻗﺴﻤﺖ زﻳﺮ ﻧﺤﻮه اﺳﺘﻔﺎده از ﻣﺴﻴﺮ در ﺗﺎﺑﻊ fopenآﻣﺪه اﺳﺖ :
/home/dan/data/data.txt
در ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ وﻳﻨﺪوز ﻧﻴﺰ ﻫﻤﺎﻧﻨﺪ ﻣﺜﺎل زﻳﺮ از ﻛﺎراﻛﺘﺮ \ ﺑﺮاي ﻣﺴﻴﺮ ﻫﺎ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد :
c:\mydocs\data.txt
اﻟﺒﺘﻪ در ﺻﻮرﺗﻲ ﻛﻪ ﺑﺨﻮاﻫﻴﺪ ﻣﺴﻴﺮ ﻫﺎي وﻳﻨﺪوز را در ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻒ PHPﺑﻪ ﻛﺎر ﺑﺮﻳﺪ ﺑﺎﻳﺪ ﺑﻪ ﺟﺎي ﻳﻚ
ﻛﺎراﻛﺘﺮ \ از دو ﻛﺎراﻛﺘﺮ \\ اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﺑﻪ ﻃﻮر ﻣﺜﺎل اﮔﺮ ﻣﺴﻴﺮ c:\mydocs\data.txtرا در ﻳﻚ ﺗﺎﺑﻊ
PHPﺑﻪ ﻛﺎر ﺑﺮﻳﺪ ﺑﺎﻳﺪ اﻳﻦ ﻣﺴﻴﺮ را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ c:\\mydocs\\data\\data.txt :
ﺗﺎﺑﻊ fopen
اﻳﻦ ﺗﺎﺑﻊ ﺑﺮاي ﺑﺎز ﻛﺮدن ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻛﺎر ﻣﻲ رود و handleﻣﺮﺗﺒﻂ ﺑﺎ ﻓﺎﻳﻞ ﺑﺎز ﺷﺪه را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ .اﻳﻦ
ﺗﺎﺑﻊ ﺳﻪ آرﮔﻮﻣﻨﺖ زﻳﺮ را درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﺪ :
54 | P a g e
در ﺻﻮرﺗﻲ ﻛﻪ ﻓﺎﻳﻞ ﺑﻪ درﺳﺘﻲ ﺑﺎز ﺷﻮد ﻣﻘﺪار ﺑﺎزﮔﺸﺘﻲ ﻳﻚ ﻣﻘﺪار ﺻﺤﻴﺢ ﻣﺜﺒﺖ ﺧﻮاﻫﺪ ﺑﻮد اﮔﺮ در ﺑﺎز
ﻛﺮدن ﻓﺎﻳﻞ ﻣﺸﻜﻠﻲ ﺑﻪ وﺟﻮد آﻳﺪ آﻧﮕﺎه اﻳﻦ ﻣﻘﺪار ﺻﻔﺮ ﺧﻮاﻫﺪ ﺷﺪ .ﺑﻨﺎ ﺑﺮ اﻳﻦ ﺑﻌﺪ از ﺑﺎز ﻛﺮدن ﻳﻚ ﻓﺎﻳﻞ
ﺑﻬﺘﺮ اﺳﺖ ﺑﺮرﺳﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ ﻓﺎﻳﻞ ﺑﻪ درﺳﺘﻲ ﺑﺎز ﺷﺪه اﺳﺖ ﻳﺎ ﻧﻪ .ﺑﻪ ﻛﺪ زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .
آرﮔﻮﻣﻨﺖ اول آدرس ﻓﺎﻳﻠﻲ اﺳﺖ ﻛﻪ ﻣﻲ ﺧﻮاﻫﻴﻢ آن را ﺑﺎز ﻛﻨﻴﻢ .اﻳﻦ ﻣﺴﻴﺮ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﻃﻮر ﻧﺴﺒﻲ ﻳﺎ ﺑﻪ
ﻃﻮر ﻣﻄﻠﻖ ذﻛﺮ ﻣﻲ ﺷﻮد .ﺑﻪ ﻃﻮر ﻣﺜﺎل اﮔﺮ داﻳﺮﻛﺘﻮري ﺳﺮوﻳﺲ دﻫﻨﺪه وب ﻣﺎ d:\in\wwwrootﺑﺎﺷﺪآﻧﮕﺎه
دﺳﺘﻮر )” fopen(“./data.txt”,”wﻳﻚ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺑﻨﺎم dataرا در داﻳﺮﻛﺘﻮري وب ﺳﺎﻳﺖ ﻳﻌﻨﻲ
d:\in\wwwrootاﻳﺠﺎد ﺧﻮاﻫﺪ ﻧﻤﻮد اﻳﻦ ﻣﺴﻴﺮ ﻧﺴﺒﻲ ﻣﻲ ﺑﺎﺷﺪ وﻟﻲ اﮔﺮ آدرس ﻓﺎﻳﻞ را ﺑﻪ ﺻﻮرت
d:\in\wwwrootوارد ﻛﻨﻴﻢ آدرس ﻣﻄﻠﻖ ﻧﺎﻣﻴﺪه ﻣﻲ ﺷﻮد و ﻳﻚ ﻓﺎﻳﻞ در آن ﻣﺴﻴﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻧﻤﻮد .
55 | P a g e
ﺗﺎﺑﻊ fclose
ﺑﻌﺪ از اﻳﻨﻜﻪ ﭘﺮدازش ﻫﺎ و ﻋﻤﻠﻴﺎت ﻣﻮرد ﻧﻈﺮ را ﺑﺮ روي ﻓﺎﻳﻞ ﺑﺎز ﺷﺪه اﻧﺠﺎم دادﻳﻢ ﺑﺎﻳﺪ ﻓﺎﻳﻞ را ﺑﺒﻨﺪﻳﻢ ﺑﻪ
ﻫﻤﻴﻦ ﻣﻨﻈﻮر ﺑﺎﻳﺪ از ﺗﺎﺑﻊ fcloseاﺳﺘﻔﺎده ﻛﺮد .اﻳﻦ ﺗﺎﺑﻊ ﻓﺎﻳﻞ ﺑﺎز ﺷﺪه را ﻣﻲ ﺑﻨﺪد در ﺻﻮرﺗﻲ ﻛﻪ اﻳﻦ
ﻋﻤﻠﻴﺎت را ﺑﺎ ﻣﻮﻓﻘﻌﻴﺖ اﻧﺠﺎم دﻫﺪ ﻣﻘﺪار trueرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﻘﺪار falseرا ﺑﺮ ﻣﻲ
ﮔﺮداﻧﺪ .
ﻓﺎﻳﻞ ﻫﺎ ﻋﻼوه ﺑﺮ اﻃﻼﻋﺎت ﻛﻪ ﻧﮕﻬﺪاري ﻣﻲ ﻛﻨﻨﺪ اﻃﻼﻋﺎﺗﻲ را ﻧﻴﺰ درﺑﺎره ي ﺧﻮدﺷﺎن دارا ﻣﻲ ﺑﺎﺷﺪ .ﻧﺎم ,
اﻧﺪازه ,زﻣﺎن ﺗﻐﻴﻴﺮ و .....از ﺟﻤﻠﻪ اﻃﻼﻋﺎت ﻳﻚ ﻓﺎﻳﻞ ﻣﻲ ﺑﺎﺷﻨﺪ .در PHPﺗﺎﺑﻊ )( statﻣﺎ را ﻗﺎدر ﻣﻲ ﺳﺎزد
درﺑﺎره ﻳﻚ ﻓﺎﻳﻞ اﻃﻼﻋﺎﺗﻲ را ﺑﺪﺳﺖ آورﻳﻢ .
ﺧﺮوﺟﻲ
57 | P a g e
ﺗﺎﺑﻊ )( fread
اﻳﻦ ﺗﺎﻳﻊ ﺑﺮاي ﺧﻮاﻧﺪن ﻳﻚ رﺷﺘﻪ از ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻛﺎر ﻣﻲ رود .ﺗﺎﺑﻊ )( freadﻳﻚ ﻓﺎﻳﻞ و ﻳﻚ ﻣﻘﺪار ﺻﺤﻴﺢ
را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﻨﺖ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﺪ ﺳﭙﺲ ﺑﻪ اﻧﺪازه ﻣﺸﺨﺺ از ﻓﺎﻳﻞ ﻣﻮرد ﻧﻈﺮ ﺧﻮاﻧﺪه و آن را ﺑﺮ ﻣﻲ
ﮔﺮداﻧﺪ .ﺑﻪ ﻣﺜﺎل freadﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﻓﺎﻳﻞ data.txtﺑﺮاي ﺧﻮاﻧﺪن ﺑﺎز ﻣﻲ ﺷﻮد و از اول آن
ﺑﻪ ﻣﻴﺰان 8ﻛﺎراﻛﺘﺮ ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد و در ﻣﺘﻐﻴﻴﺮ $dataذﺧﻴﺮه ﻣﻲ ﺷﻮد .
ﺧﺮوﺟﻲ
از اﻳﻦ ﺗﺎﺑﻊ ﺑﺮاي ﻧﻮﺷﺘﻦ اﻃﻼﻋﺎت ﺑﺮ روي ﻳﻚ ﻓﺎﻳﻞ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﺗﺎﺑﻊ fwriteﻫﻤﺎﻧﻨﺪ ﺗﺎﺑﻊ )(fread
دو آرﮔﻮﻣﺎن ﻣﻲ ﮔﻴﺮد .اﻳﻦ ﺗﺎﺑﻊ آرﮔﻮﻣﻨﺖ دوم را در ﻓﺎﻳﻞ ﻣﺸﺨﺺ ﺷﺪه ﺗﻮﺳﻂ آرﮔﻮﻣﻨﺖ اوﻟﻲ ﻣﻲ ﻧﻮﻳﺴﺪ و
ﺳﭙﺲ ﺗﻌﺪاد ﻛﺎراﻛﺘﺮ ﻫﺎي ﻧﻮﺷﺘﻪ ﺷﺪه را ﺑﺮ ﻣﻴﮕﺮداﻧﺪ و در ﺻﻮرﺗﻲ ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ ﺑﺎ ﺧﻄﺎﻳﻲ ﻣﻮاﺟﻪ ﺷﻮد ﻣﻘﺪار
-1را ﺑﺮ ﻣﻴﮕﺮداﻧﺪ .
ﺧﺮوﺟﻲ
58 | P a g e
اﻳﻦ ﺗﺎﺑﻊ ﻫﻤﭽﻨﺎن ورودي ﺳﻮم ﻫﻢ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻣﻴﺰان ﺣﺪاﻛﺜﺮ ﻧﻮﺷﺘﻦ در ﻓﺎﻳﻞ اﺳﺖ ﺑﻪ ﺷﻜﻞ زﻳﺮ
ﻧﮕﺎه ﻛﻨﻴﺪ ﻋﺪد 4ﺑﻪ ﻣﻌﻨﻲ اﻳﻦ اﺳﺖ ﻛﻪ در ﻓﺎﻳﻞ ﺑﺎز ﺷﺪه رﺷﺘﻪ Mohsﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد .
Uploadﻛﺮدن ﻓﺎﻳﻞ
ﺳﺎﻳﺖ ﻫﺎي ﻣﺨﺘﻠﻒ اﻳﻨﺘﺮﻧﺘﻲ ﻫﻤﺎﻧﻨﺪ ﻳﺎﻫﻮ اﻣﻜﺎن آﭘﻠﻮد ﻓﺎﻳﻞ ﻫﺎ را ﻓﺮاﻫﻢ ﻣﻲ آوردﻧﺪ .در اﻳﻦ ﺳﺎﻳﺖ ﻫﺎ
ﻛﺎرﺑﺮ ﻣﻲ ﺗﻮاﻧﺪ ﻓﺎﻳﻞ ﻫﺎي ﻣﻮرد ﻧﻈﺮ را از ﺳﻴﺴﺘﻢ ﺧﻮد ﺑﻪ ﺳﺮوﻳﺲ دﻫﻨﺪه ارﺳﺎل ﻧﻤﺎﻳﺪ PHP .ﻧﻴﺰ ﻗﺎﺑﻠﻴﺖ
ﻣﺪﻳﺮﻳﺖ ﻋﻤﻠﻴﺎت آﭘﻠﻮد ﻓﺎﻳﻞ ﻫﺎ را دارا ﻣﻲ ﺑﺎﺷﺪ .اﻟﺒﺘﻪ زﻣﺎﻧﻲ ﻛﻪ ﺷﻤﺎ ﺑﻪ ﻛﺎرﺑﺮان اﻣﻜﺎن آﭘﻠﻮد ﻓﺎﻳﻞ ﻫﺎ را
ﻣﻲ دﻫﻴﺪ ﻣﻤﻜﻦ اﺳﺖ ﻣﺸﻜﻼت اﻣﻨﻴﺘﻲ ﺑﺮاي ﺳﺮوﻳﺲ دﻫﻨﺪه ﺷﻤﺎ ﺑﻪ وﺟﻮد آﻳﺪ ﻟﺬا ﺑﻪ ﻫﻨﮕﺎم ﻓﻌﺎل ﺳﺎزي
اﻳﻦ ﻗﺎﺑﻠﻴﺖ ﻣﺴﺎﺋﻞ اﻣﻨﻴﺘﻲ را ﻧﻴﺰ ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .
ﺑﻪ ﻣﺜﺎل ﻓﻮق ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل اﺑﺘﺪا ﻳﻚ ﻓﺮم ﺑﺮاي اﻧﺘﺨﺎب ﻓﺎﻳﻠﻲ ﻛﻪ ﻗﺮار اﺳﺖ آﭘﻠﻮد ﺷﻮد اﻳﺠﺎد
ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ اﻳﻦ ﻓﺮم ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ﻣﺘﺪ postارﺳﺎل ﺷﻮد و ﺧﺎﺻﻴﺖ enctypeآن ﻫﻢ ﺑﺎﻳﺪ روي
multipart/form‐dataﺗﻨﻈﻴﻢ ﺷﺪه ﺑﺎﺷﺪ .اﺑﺘﺪا ﻳﻚ ورودي ﺑﺮاي اﻧﺘﺨﺎب ﻓﺎﻳﻞ در ﻓﺮم ﻗﺮار ﻣﻲ دﻫﻴﻢ و
ﻳﻚ دﻛﻤﻪ ﺑﺮاي ارﺳﺎل ﻫﻢ ﻗﺮار ي دﻫﻴﻢ و actionﻓﺮم را ﻫﻢ روي ﻓﺎﻳﻞ uploader.phpﻣﻲ ﮔﺬارﻳﻢ .در
ﻓﺎﻳﻞ uploader.phpاﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ ﻓﺎﻳﻠﻲ از ﻓﺮم ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل
ﻧﺸﺪه ﺑﺎﺷﺪ دوﺑﺎره urlﻣﺮورﮔﺮ را ﺑﻪ ﺻﻔﺤﻪ ﻓﺮم ﺑﺮ ﻣﻴﮕﺮداﻧﻴﻢ وﻟﻲ اﮔﺮ اﻃﻼﻋﺎت ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ دوﺑﺎره
ﺑﺎ ﻣﺘﻐﻴﻴﺮ ﺳﺮاﺳﺮي $_FILESﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ errorوﺟﻮد دارد ﻳﺎ ﺧﻴﺮ اﮔﺮ errorوﺟﻮد ﻧﺪاﺷﺘﻪ
ﺑﺎﺷﺪ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ move_uploaded_fileﻛﻪ دو ورودي ﻣﻲ ﮔﻴﺮد ﻛﻪ ﭘﺎراﻣﺘﺮ اول ﻣﺴﻴﺮ ﻓﺎﻳﻞ ﻣﻮﻗﺖ
آﭘﻠﻮد ﺷﺪه اﺳﺖ و ﭘﺎراﻣﺘﺮ دوم ﻣﺴﻴﺮي اﺳﺖ ﻛﻪ ﻓﺎﻳﻞ ﺑﺎﻳﺪ آﭘﻠﻮد ﺷﻮد .
59 | P a g e
ﻣﻘﺪار ﻓﺎﻳﻞ uploader.phpرا در ﺗﺼﻮﻳﺮ ﻓﻮق ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﺪ .
ﻣﻘﺪاري آراﻳﻪ ﻓﻮق ﺳﺮاﺳﺮي $_FILESرا در ﺟﺪول زﻳﺮ ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﺪ .
ﺗﻮﺿﻴﺤﺎت ﻋﻨﺼﺮ
60 | P a g e
ارﺳﺎل emailﺑﺎ PHP
ﺑﺮاي ارﺳﺎل ﭘﻴﺎم ﻫﺎي ﻣﺘﻨﻲ ﺳﺎده از دﺳﺘﻮر )( mailاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .اﻳﻦ دﺳﺘﻮر ﺑﺮاي ارﺳﺎل اﻳﻤﻴﻞ ﺑﻪ
ﺳﻴﺴﺘﻢ ﭘﺴﺖ اﻟﻜﺘﺮوﻧﻴﻜﻲ ﻣﺤﻠﻲ ﻣﺘﻜﻲ ﻣﻲ ﺑﺎﺷﺪ .در ﺗﺼﻮﻳﺮ ﻓﻮق ﻧﺤﻮه اﺳﺘﻔﺎده از اﻳﻦ ﺗﺎﺑﻊ آﻣﺪه اﺳﺖ .
ﻫﺮ ﻳﻚ از ورودي ﻫﺎي اﻳﻦ ﺗﺎﺑﻊ در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ .
61 | P a g e
ﺑﻪ ﻣﺜﺎل mailﺗﻮﺟﻪ ﻛﻨﻴﺪ .
62 | P a g e
ﻓﺼﻞ ﻳﺎزدﻫﻢ
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا
ﻗﺎﺑﻠﻴﺖ ﺷﺊ ﮔﺮاﻳﻲ در PHPﻧﺴﺨﻪ 3ﺑﻪ ﺑﻌﺪ اﻳﺠﺎد ﺷﺪه اﺳﺖ .روش ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻛﻪ در ﺟﻠﺴﺎت ﻗﺒﻞ
ﻣﺸﺎﻫﺪه ﻛﺮدﻳﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ روﻳﻪ اﻳﻲ ﻧﺎم دارد .در اﻳﻦ ﻣﺪل ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻛﺎرﺑﺮدي از
ﻳﻜﺴﺮي ﺗﻮاﺑﻊ ﻳﺎ روﻳﻪ ﻫﺎ ﺗﺸﻜﻴﻞ ﻣﻲ ﺷﻮد و در ﺣﻴﻦ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺗﻮاﺑﻊ ﻣﻮرد ﻧﻈﺮ ﺑﺎ داده ﻫﺎي ﻻزم
ﻓﺮاﺧﻮاﻧﻲ و اﺟﺮا ﻣﻲ ﮔﺮدﻧﺪ .در اﻳﻦ ﺟﻠﺴﻪ ﻣﻲ ﺧﻮاﻫﻴﻢ ﺗﺎ ﻣﺘﺪ ﻣﺘﻔﺎوﺗﻲ در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ ﻧﺎم ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا را ﻣﻌﺮﻓﻲ ﻛﻨﻴﻢ .
در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا ﺑﺎ ﻛﻤﻚ اﺷﻴﺎء ﻣﻲ ﺗﻮاﻧﻴﻢ اﺷﻴﺎء ﻣﻮﺟﻮد در دﻧﻴﺎي واﻗﻌﻲ ﻫﻤﺎﻧﻨﺪ ﭼﻴﺰ ﻫﺎي ﻣﺨﺘﻠﻒ ,
ﻓﺮآﻳﻨﺪ ﻫﺎ و اﻳﺪه ﻫﺎ را ﻣﺪل ﺳﺎزي ﻛﻨﻴﻢ .در اﻳﻦ ﻣﺪل ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ از ﻳﻜﺴﺮي ﺷﺊ ﺗﺸﻜﻴﻞ ﻣﻲ
ﺷﻮﻧﺪ ﻛﻪ ﻫﺮ ﻛﺪام در ﺣﻘﻴﻘﺖ ﻧﻘﺶ ﻳﻜﻲ از اﺷﻴﺎء ﻣﻮﺟﻮد در دﻧﻴﺎي واﻗﻌﻲ را ﺑﺎزي ﻣﻲ ﻛﻨﺪ ﻫﻤﭽﻨﻴﻦ ﻫﺮ ﺷﺊ
ﻋﻤﻠﻴﺎت ﺧﺎﺻﻲ را اﻧﺠﺎم ﻣﻲ دﻫﺪ و ﺳﺮوﻳﺲ ﻫﺎي ﺧﺎﺻﻲ را ﺑﻪ ﺳﺎﻳﺮ اﺷﻴﺎء ﻣﻲ ﺗﻮاﻧﺪ اراﺋﻪ دﻫﺪ وﻟﻲ ﺑﻪ ﻃﻮر
ﻛﻠﻲ ﺟﺰوﺋﻴﺎت ﻧﺤﻮه اﻧﺠﺎم ﻋﻤﻠﻴﺎت داﺧﻞ ﻫﺮ ﺷﺊ ﺑﺮاي اﺷﻴﺎء دﻳﮕﺮ ﭘﻨﻬﺎن ﻣﻲ ﺑﺎﺷﺪ .
) Oop (object oriented programmingﺑﺮاي ﺳﺎدﮔﻲ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﻪ وﺟﻮد آﻣﺪه اﺳﺖ ﺑﺎ اﺳﺘﻔﺎده از
oopﺷﻤﺎ ﻣﻲ ﺗﻮاﻧﻴﺪ ﻣﺴﺎﺋﻞ ﺑﺰرگ را ﺗﺒﺪﻳﻞ ﺑﻪ ﭼﻨﺪ ﻣﺴﺌﻠﻪ ﻛﻮﭼﻚ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﻧﺴﺒﺖ ﺑﻪ ﻣﺴﺌﻠﻪ اﺻﻠﻲ راﺣﺖ
ﺗﺮ ﺣﻞ ﻣﻲ ﺷﻮﻧﺪ .
ﻗﺎﺑﻠﻴﺖ اﺳﺘﻔﺎده ﻣﺠﺪد :ﻳﻚ ﺷﺊ ﻣﻮﺟﻮدﻳﺘﻲ اﺳﺖ ﻛﻪ ﻣﻲ ﺗﻮاﻧﺪ ﺧﺼﻮﺻﻴﺎت و رﻓﺘﺎر ﻫﺎ را در ﺑﺮ
داﺷﺘﻪ و ﻳﺎ ﺑﺎ اﺷﻴﺎء دﻳﮕﺮ ﻣﺮﺗﺒﻂ ﺑﺎﺷﺪ .ﻳﻚ ﺷﺊ اﻏﻠﺐ ﺑﺮاي رﻓﻊ ﻣﺠﻤﻮﻋﻪ ﻣﺸﺨﺼﻲ از ﻣﺸﻜﻼت ﺗﻮﻟﻴﺪ ﻣﻲ
ﺷﻮد ﻫﺮﮔﺎه در ﺳﺎﻳﺮ ﭘﺮوژه ﻫﺎ ﻧﻴﺎز ﺑﻪ رﻓﻊ ﻣﺸﻜﻼت ﻣﺸﺎﺑﻬﻲ ﺑﺎﺷﺪ ﻣﻲ ﺗﻮان از ﻫﻤﺎن ﺷﺊ در آن ﭘﺮوژه
اﺳﺘﻔﺎده ﻛﺮد .
اﺻﻼح ﻣﺠﺪد :اﮔﺮ ﻧﻴﺎز ﺑﻪ اﺻﻼح ﭘﺮوژه ﻫﺎي ﺧﻮد داﺷﺘﻪ ﺑﺎﺷﻴﺪ oop ,ﺑﻪ ﺷﻤﺎ ﺣﺪاﻛﺜﺮ ﺳﻮد را ﻣﻲ
رﺳﺎﻧﺪ زﻳﺮا ﺗﻤﺎﻣﻲ اﺷﻴﺎء ﻣﻮﺟﻮد در ﺑﺮﻧﺎﻣﻪ ,ﻣﻮﺟﻮدﻳﺖ ﻫﺎي ﻛﻮﭼﻜﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺷﺎﻣﻞ ﺧﺼﻮﺻﻴﺎت و رﻓﺘﺎر
ﻫﺎي ﺧﺎص ﺧﻮد ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﻨﺎﺑﺮ اﻳﻦ ﺗﻐﻴﻴﺮ و اﺻﻼح آن ﻫﺎ ﺑﻪ ﻣﺮاﺗﺐ ﺳﺎده ﺗﺮ اﺳﺖ .
ﻗﺎﺑﻠﻴﺖ ﮔﺴﺘﺮش :ﺑﺎ اﺳﺘﻔﺎده از oopﻣﻴﺘﻮاﻧﻴﺪ اﺷﻴﺎء ﺧﻮد را ﺑﺎزﻧﻮﻳﺴﻲ ﻛﺮده و وﻳﮋﮔﻲ ﻫﺎ ي ﺧﺎﺻﻲ
را ﺑﻪ آن ﻫﺎ اﺿﺎﻓﻪ ﻛﻨﻴﺪ ﻫﻤﺰﻣﺎن ﺑﺎ اﻳﻦ ﻛﺎر ﻣﻲ ﺗﻮاﻧﻴﺪ ﺳﺎزﮔﺎري ﺑﺎ ﻧﺴﺨﻪ ﻫﺎي ﻗﺒﻠﻲ را ﻧﻴﺰ ﺣﻔﻆ ﻧﻤﺎﻳﻴﺪ .ﺑﺮاي
63 | P a g e
اﻳﻦ ﻛﺎر ﻛﺪ ﻗﺒﻠﻲ ﺷﻤﺎ ﺑﻪ ﺻﻮرت ﭘﺎﻳﻪ ﺗﻌﺮﻳﻒ و اﻣﻜﺎﻧﺎت ﺟﺪﻳﺪ ﺑﻪ آن اﺿﺎﻓﻪ ﺷﺪه و آن را ﮔﺴﺘﺮش ﻣﻲ دﻫﺪ.
ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ اﺷﻴﺎء ﺟﺪﻳﺪ ﺗﻤﺎﻣﻲ ﺧﺼﻮﺻﻴﺎت و ﺷﺊ واﻟﺪ را از آن ﺑﻪ ارث ﻣﻲ ﺑﺮﻧﺪ و ﺳﭙﺲ وﻳﮋﮔﻲ ﻫﺎي ﺟﺪﻳﺪ
را ﺑﻪ آن اﺿﺎﻓﻪ ﻣﻲ ﻧﻤﺎﻳﻨﺪ .اﻳﻦ ﻋﻤﻞ اﺻﻄﻼﺣﺎ وراﺛﺖ ﻧﺎم دارد و ﻳﻜﻲ از وﻳﮋﮔﻲ ﻫﺎي ﺑﺴﻴﺎر ﻣﻬﻢ oopﺑﻪ
ﺷﻤﺎر ﻣﻲ رود .
ﻗﺎﺑﻠﻴﺖ ﻧﮕﻬﺪاري :ﻛﺪ ﺷﺊ ﮔﺮا راﺣﺖ ﺗﺮ ﻧﮕﻬﺪاري ﻣﻲ ﺷﻮد ﺑﺮاي ﻣﺜﺎل وﻗﺘﻲ ﻛﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ
آﻧﺮا ﺗﻮﺳﻌﻪ ﻣﻲ دﻫﺪ ,ﺑﺎزﻧﻮﻳﺴﻲ و ﻳﺎ اﺷﻜﺎل زداﻳﻲ ﻣﻲ ﻛﻨﺪ ﻣﻲ ﺗﻮان ﺑﻪ راﺣﺘﻲ ﺳﺎﺧﺘﺎر ﻛﺪﻧﻮﻳﺴﻲ داﺧﻠﻲ
آن را ﻛﺸﻒ ﻛﺮد و ﻛﺪ را ﻫﺮ زﻣﺎن ﺑﻪ روز رﺳﺎﻧﻲ ﻧﻤﻮد .
ﻛﺎرآﻳﻲ :ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا در ﺣﻘﻴﻘﺖ ﺑﺮاي ﻛﺎرآﻳﻲ ﺑﻬﺘﺮ و راﺣﺘﻲ ﻓﺮآﻳﻨﺪ ﺗﻮﺳﻌﻪ ﻧﺮم اﻓﺰار ﺑﻪ
وﺟﻮد آﻣﺪه اﺳﺖ .اﺑﺘﺪا ﻣﺴﺌﻠﻪ ر اﺑﻪ ﻣﺠﻤﻮﻋﻪ اﻳﻲ از ﻣﺴﺎﺋﻞ ﻛﻮﭼﻚ ﺗﺒﺪﻳﻞ ﻣﻲ ﻛﻨﻴﺪ و ﺳﭙﺲ راه ﺣﻞ ﻣﺴﺎﺋﻞ
ﻛﻮﭼﻚ را ﻣﻲ ﻳﺎﺑﺪ و ﻃﺒﻴﻌﺘﺎ ﻣﺴﺌﻠﻪ ﺑﺰرگ و اﺻﻠﻲ ﺑﻄﻮر ﺧﻮدﻛﺎر ﺣﻞ ﺧﻮاﻫﺪ ﺷﺪ .
ﻛﻼس
ﻳﻚ ﻛﻼس اﻟﮕﻮﻳﻲ ﺑﺮاي اﻳﺠﺎد اﺷﻴﺎء اﺳﺖ و ﺳﺎﺧﺘﺎر اﺷﻴﺎء را ﻣﺸﺨﺺ ﻛﺮده و ﻣﺘﺪ ﻫﺎ و ﺧﺎﺻﻴﺖ ﻫﺎي ﻳﻚ ﺷﺊ
را ﺗﻌﻴﻴﻦ ﻣﻲ ﻧﻤﺎﻳﺪ .ﻛﻼس ﭼﻴﺰي ﺑﻪ ﺟﺰء ﻗﻄﻌﻪ اﻳﻲ از ﻛﺪ ﺑﺎ ﺗﻌﺪادي ﺧﺼﻮﺻﻴﺎت )ﻓﻴﻠﺪ (field-و
رﻓﺘﺎر ﻫﺎ )ﻣﺘﺪ (method-ﻧﻴﺴﺖ .ﺧﺼﻮﺻﻴﺎت داده ﻫﺎي اﺷﻴﺎء ﻫﺴﺘﻨﺪ و ﺑﻪ ﺻﻮرت ﻣﺘﻐﻴﻴﺮ ﻫﺎﺋﻲ در داﺧﻞ
ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ .ﻳﻚ ﺧﺎﺻﻴﺖ ﻣﻤﻜﻦ اﺳﺖ ﻳﻪ ﻣﻘﺪار ,ﻳﻚ آراﻳﻪ و ﺣﺘﻲ ﻳﻚ ﺷﺊ ﺑﺎﺷﺪ .
ﻣﺘﺪ ﻫﺎ در ﺣﻘﻴﻘﺖ ﺗﻮاﺑﻊ ﻳﺎ ﻋﻤﻠﻴﺎﺗﻲ ﻫﺴﻨﺘﺪ ﻛﻪ در داﺧﻞ ﻛﻼس ﻳﻚ ﺷﺊ ﺗﻌﺮف ﻣﻲ ﮔﺮدد .
اﺷﻴﺎء
اﻟﮕﻮي ﻳﻚ ﺷﺊ اﺳﺖ .در ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ وﻗﺘﻲ ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد اﻳﻦ ﻛﻼس ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﻫﻴﭻ ﻗﺎﺑﻠﻴﺖ
اﺟﺮاﻳﻲ ﻧﺪارد و ﻗﺘﻲ از ﻛﻼس ﺷﺊ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .آن وﻗﺖ ﻣﻲ ﺗﻮان از آن ﺷﺊ در ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﻧﻤﻮد و
ﺗﻤﺎﻣﻲ وﻳﮋﮔﻲ ﻫﺎﻳﻲ ﻛﻪ در ﻛﻼس ﻣﺮﺑﻮﻃﻪ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ )اﻋﻢ از ﺧﺼﻮﺻﻴﺎت,رﻓﺘﺎرﻫﺎ و (...ﺑﺮ روي ﺷﺊ
ﻣﺮﺑﻮﻃﻪ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﺧﻮاﻫﻨﺪ ﺑﻮد .در oopﻫﻴﭻ ﺷﺌﻲ ﺑﺪون ﻛﻼس وﺟﻮد ﻧﺪارد و ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ اﺷﻴﺎء
از روي ﻛﻼس ﻫﺎ ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮﻧﺪ و ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ﻛﻼس ﻧﺒﺎﺷﺪ ﺷﺊ ﻧﻴﺰ وﺟﻮد ﻧﺨﻮاﻫﺪ داﺷﺖ .
64 | P a g e
ﺧﺎﺻﻴﺖ
ﻳﻚ ﺧﺎﺻﻴﺖ ﻳﺎ ﻓﻴﻠﺪ در ﺣﻘﻴﻘﺖ ﻣﺘﻐﻴﻴﺮي از ﻛﻼس اﺳﺖ ﻛﻪ ﻣﺴﺘﻘﻴﻤﺎ درون ﺧﻮد ﻛﻼس )و ﻧﻪ درون ﻣﺘﺪ ﻫﺎي
داﺧﻞ ﻛﻼس( ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮد .اﻳﻦ ﻋﻨﺎﺻﺮ ﺗﻮﺳﻂ ﺗﻤﺎﻣﻲ ﺗﻮاﺑﻊ )ﻣﺘﺪ ﻫﺎ( در ﺗﻤﺎﻣﻲ ﺑﺨﺶ ﻫﺎي ﻛﻼس ﻗﺎﺑﻞ
دﺳﺘﺮﺳﻲ ﻫﺴﺘﻨﺪ .
ﻣﺘﺪ
ﻣﺘﺪ ﻫﺎ ﺗﻮاﺑﻌﻲ ﻫﺴﺘﻨﺪ ﻛﻪ درون ﻳﻚ ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ و رﻓﺘﺎر ﻫﺎي اﺷﻴﺎء اﻳﺠﺎد ﺷﺪه از ﻛﻼس را
ﺗﻌﺮﻳﻒ ﻣﻲ ﻛﻨﺪ .
ﻛﭙﺴﻮﻟﻪ ﺳﺎزي
اﻳﻦ اﺻﻄﻼح ﺑﻪ ﻣﻌﻨﻲ ﻣﻜﺎﻧﻴﺰﻣﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ آن ﻛﺪ درون ﻛﻼس )ﻣﺘﺪﻫﺎ( و داده ﻫﺎي ﻣﻮﺟﻮد در آن
)ﻓﻴﻠﺪﻫﺎ( ﺑﻪ ﻫﻢ ﻣﺘﺼﻞ ﻣﻲ ﺷﻮﻧﺪ و ﻫﺮ دو ﻣﻮرد )ﻓﻴﻠﺪ و ﻣﺘﺪ( از ﺗﺪاﺧﻞ ﺧﺎرﺟﻲ و اﺳﺘﻔﺎده ﻧﺎﻣﻨﺎﺳﺐ ﻣﺼﻮن
ﻣﻲ ﻣﺎﻧﻨﺪ .در ﺣﻘﻴﻘﺖ ﺑﻪ ﻋﻤﻞ ﻣﺤﺎﻓﻈﺖ از داده ﻫﺎ و ﻣﺘﺪ ﻫﺎ از ﻃﺮﻳﻖ ﻳﻚ ﺳﻴﺴﺘﻢ واﺣﺪ )ﻛﻼس( ﻛﭙﺴﻮﻟﻪ
ﺳﺎزي ﻣﻲ ﮔﻮﻧﺪ .ﻣﺰﻳﺖ اﺻﻠﻲ ﻛﭙﺴﻮﻟﻪ ﺳﺎزي ﺗﻀﻤﻴﻦ ﺻﺤﺖ اﻃﻼﻋﺎت و اﻧﺠﺎم ﻋﻤﻠﻴﺎت اﺳﺖ .
وراﺛﺖ
ﻓﺮآﻳﻨﺪ ﻣﺸﺘﻖ ﺷﺪن ﻳﻚ ﻛﻼس از ﻛﻼس دﻳﮕﺮ و ﮔﺴﺘﺮش اﻣﻜﺎﻧﺎت ﺗﻌﺮﻳﻒ ﺷﺪه آن ,وراﺛﺖ ﻧﺎم دارد .وﻗﺘﻲ
ﻳﻚ ﻛﻼس را از ﻛﻼس دﻳﮕﺮي ﻣﺸﺘﻖ ﻣﻲ ﺷﻮد ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه )ﻓﺮﻋﻲ( ﺗﻤﺎﻣﻲ رﻓﺘﺎر ﻫﺎ و ﺧﺼﻮﺻﻴﺎت
ﻛﻼس واﻟﺪ )اﺻﻠﻲ( را ﺑﻪ ارث ﻣﻲ ﺑﺮد .ﺳﭙﺲ ﻛﻼس ﻓﺮﻋﻲ ﻣﻲ ﺗﻮاﻧﺪ ﻣﺘﺪ ﻫﺎ و ﻓﻴﻠﺪ ﻫﺎي دﻟﺨﻮاه ﺧﻮد را
اﺿﺎﻓﻪ ﻛﺮده ﻳﺎ ﺗﻐﻴﻴﺮ دﻫﺪ .
ﭼﻨﺪ رﻳﺨﺘﻲ
اﮔﺮ ﻳﻚ ﻛﻼس از ﻛﻼس دﻳﮕﻴﺮي ﻣﺸﺘﻖ ﺷﺪه ﺑﺎﺷﺪ ﻣﻲ ﺗﻮاﻧﺪ ﻣﺘﺪ ﻫﺎي آن را ﺑﺎزﻧﻮﻳﺴﻲ ﻛﻨﺪ .ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ
اﮔﺮ ﻳﻚ ﺷﺊ از اﻳﻦ ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه اﻳﺠﺎد ﺷﻮد ,اﻳﻦ اﻣﻜﺎن وﺟﻮد دارد ﻛﻪ ﺑﺎ ﻓﺮاﺧﻮاﻧﻲ ﻳﻚ ﻣﺘﺪ ﺧﺎص
رﻓﺘﺎري ﻣﺘﻔﺎوت ﺑﺎ زﻣﺎﻧﻲ ﻛﻪ ﻫﻤﺎن ﻣﺘﺪ را از ﺷﺊ واﻟﺪ اﻳﺠﺎد ﺷﺪه اﺳﺖ ﺻﺪا ﻣﻲ زﻧﻴﻢ ,اﺟﺮا ﮔﺮدد ﺑﻪ اﻳﻦ
65 | P a g e
ﻋﻤﻞ ,ﭼﻨﺪ رﻳﺨﺘﻲ ﻣﻲ ﮔﻮﻳﻴﻢ ﻛﻪ در آن ﻳﻚ ﺷﺊ ﺑﺴﺘﻪ ﺑﻪ آن ﻛﻪ از ﻛﻼس واﻟﺪ ﻳﺎ ﻣﺸﺘﻖ ﺷﺪه اﻳﺠﺎد ﺷﻮد ,
ﺑﺎ ﻓﺮاﺧﻮاﻧﻲ ﻳﻚ ﻣﺘﺪ ﺧﺎص ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ اﺷﻜﺎل ﻣﺨﺘﻠﻔﻲ رﻓﺘﺎر ﻛﻨﺪ .
اﻣﺘﺰاج
اﻳﻦ اﺻﻄﻼح ﺑﻴﺎﻧﮕﺮ واﺑﺴﺘﮕﻲ ﻛﻼس ﻫﺎ ﺑﻪ ﻳﻜﺪﻳﮕﺮ اﺳﺖ .ﺑﺮاي ﻣﺜﺎل ﻣﻤﻜﻦ اﺳﺖ ﻳﻚ ﻛﻼس ﺣﺎوي ﻳﻚ ﻳﺎ
ﭼﻨﺪ ﻓﻴﻠﺪ ﺑﺎﺷﺪ ﻛﻪ اﻳﻦ ﻓﻴﻠﺪ ﻫﺎ در ﺣﻘﻴﻘﺖ اﺷﻴﺎﺋﻲ از ﻛﻼس ﻫﺎي دﻳﮕﺮ ﺑﺎﺷﻨﺪ .ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ,اﺷﻴﺎء ﻳﻚ
ﻛﻼس ﺑﺪون وﺟﻮد ﻛﻼس دﻳﮕﺮ ﻗﺎدر ﺑﻪ ﻛﺎر ﻛﺮدن ﻧﻴﺴﺘﻨﺪ .ﻫﺮ ﭼﻘﺪر اﻣﺘﺰاج ﻳﻚ ﻛﻼس ﻛﻤﺘﺮ ﺑﺎﺷﺪ ﻗﺎﺑﻠﻴﺖ
اﺳﺘﻔﺎده ﻣﺠﺪد ﻛﻼس ﻣﺠﺒﻮر در ﺳﺎﻳﺮ ﭘﺮوژه ﻫﺎ اﻓﺰاﻳﺶ ﺧﻮاﻫﺪ ﻳﺎﻓﺖ و ﺑﺮﻋﻜﺲ .
در ﻣﻔﺎﻫﻴﻢ وراﺛﺖ ,ﻛﻼﺳﻲ ﻛﻪ ﺳﺎﻳﺮ ﻛﻼس ﻫﺎ از آن ﻣﺸﺘﻖ ﻣﻲ ﺷﻮﻧﺪ و اﻣﻜﺎﻧﺎت ان را ﺗﻮﺳﻌﻪ ﻣﻲ دﻫﻨﺪ ,
ﻛﻼس ﺑﺮﺗﺮ ﻳﺎ واﻟﺪ ) (parentﻧﺎم دارد .
ﺑﻪ ﻛﻼﺳﻲ ﻛﻪ از ﻳﻚ ﻛﻼس دﻳﮕﺮ ﻣﺸﺘﻖ ﺷﺪه ﺑﺎﺷﺪ و ﺧﺼﻮﺻﻴﺎت و رﻓﺘﺎر ﻫﺎي آن را ﺑﻪ ارث ﻣﻲ ﺑﺮد ,ﻛﻼس
ﻓﺮﻋﻲ ﻳﺎ ﻓﺮزﻧﺪ ) (childﻣﻲ ﮔﻮﻳﻨﺪ .
اﻳﺠﺎد ﻛﻼس
ﺑﺮاي اﻳﺠﺎد ﻛﻼس ﺑﺎﻳﺪ اﺑﺘﺪا ﻛﻠﻤﻪ ﻛﻠﻴﺪي classو ﺳﭙﺲ ﻧﺎم آن ﻛﻼس را ﺑﻨﻮﻳﺴﻴﺪ و ﺳﭙﺲ ﺑﻼك ﺑﺎز ﻛﺮده
و ﺧﺎﺻﻴﺖ ﻫﺎ و ﻣﺘﺪ ﻫﺎي آن ﻛﻼس را ﻧﻮﺷﺘﻪ و ﺑﻼك را ﻣﻲ ﺑﻨﺪﻳﻢ .
66 | P a g e
ﺑﻪ ﻣﺜﺎل classﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﻓﻮق ﻛﻼﺳﻲ ﺑﻪ اﺳﻢ humanﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ درون آن ﺳﻪ ﻓﻴﻠﺪ ﺧﺼﻮﺻﻲ ﺗﻌﺮﻳﻒ ﺷﺪه
و ﻋﻼﻣﺖ >‐ اﺳﺖ .اﺑﺘﺪا ﻳﻚ ﻣﺘﺪ ﺑﺮاي درﻳﺎﻓﺖ ورودي از ﻛﺎرﺑﺮ اﻳﺠﺎد ﺷﺪه اﺳﺖ ﺑﺎ اﺳﺘﻔﺎده از $this
)ﻛﺎراﻛﺘﺮ – ﻳﺎ ﺗﻔﺮﻳﻖ و ﺳﭙﺲ ﻋﻼﻣﺖ ﺑﺰرﮔﺘﺮ >( ﺑﻪ ﻓﻴﻠﺪ ﻫﺎ و ﻣﺘﺪ ﻫﺎي ﻣﻮﺟﻮد در ﻛﻼس ﻣﻲ ﺗﻮان دﺳﺘﺮﺳﻲ
ﭘﻴﺪا ﻛﺮد و ﺑﺎ اﺳﺘﻔﺎده از $thisﻓﻴﻠﺪ ﻫﺎي داﺧﻞ ﻛﻼس را ﭘﺮ ﻛﺮده اﺳﺖ و ﻣﺘﺪ ﺑﻌﺪي ﺑﺮاي ﭼﺎپ ﺧﺮوﺟﻲ
اﺳﺖ و ﺧﺮوﺟﻲ را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .در آﺧﺮ ﻛﻪ ﻧﻮﺷﺘﻦ ﻛﻼس ﺗﻤﺎم ﻣﻲ ﺷﻮد ﺑﺎ اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ﻛﻠﻴﺪي newﻣﻲ
67 | P a g e
ﺗﻮان از ﻛﻼس ﻣﻮﺟﻮد ﺷﺊ ﺳﺎﺧﺖ دو ﺷﺊ از ﻛﻼس ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮد و ﻣﻘﺎدﻳﺮ ﻻزم ﺑﺮاي ﻣﺘﺪ اوﻟﻲ ﺑﻪ ﺷﺊ
داده ﻣﻲ ﺷﻮد ﺳﭙﺲ ﻣﺘﺪ دوﻣﻲ ﻛﻼس ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ ﺷﻮد .
ﻣﺘﺪ ﺳﺎزﻧﺪه
در PHPﻣﺘﺪ ﺳﺎزﻧﺪه ﻳﻚ ﻛﻼس ﺑﺎ ﻧﺎم __constructﻣﺸﺨﺺ ﻣﻲ ﺷﻮد اﻳﻦ ﻣﺘﺪ ﻳﻚ اﺳﺘﺜﻨﺎ اﺳﺖ ﻛﻪ در
ﻫﻤﻪ ﻛﻼس ﻫﺎ وﺟﻮد دارد .اﻏﻠﺐ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن از اﻳﻦ ﻣﺘﺪ ﺑﺮاي ﻋﻤﻠﻴﺎﺗﻲ ﻫﻤﺎﻧﻨﺪ ﻣﻘﺪار دﻫﻲ اوﻟﻴﻪ ﺧﺎﺻﻴﺖ
ﻫﺎي ﺷﺊ اﺳﺘﻔﺎده ﻛﻨﻨﺪ .ﻫﺮ ﮔﺎه ﺑﺨﻮاﻫﻴﻢ ﻳﻚ ﺷﺊ ﺟﺪﻳﺪ از ﻛﻼس اﻳﺠﺎد ﻛﻨﻴﻢ ,اﻳﻦ ﻣﺘﺪ ﺑﻄﻮر ﺧﻮدﻛﺎر
ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ ﺷﻮد .ﺑﻨﺎ ﺑﺮ اﻳﻦ اﮔﺮ ﻣﻲ ﺧﻮاﻫﻴﻢ ﻛﺎر ﻫﺎﻳﻲ را در زﻣﺎن آﻣﺎده ﺳﺎزي و اﻳﺠﺎد ﺷﺊ اﻧﺠﺎم دﻫﻴﻢ
,دﺳﺘﻮرات ﻣﺮﺑﻮﻃﻪ را در اﻳﻦ ﻣﺘﺪ ﻗﺮار ﻣﻲ دﻫﻴﻢ ﻛﻪ ﺑﻪ آن ﺳﺎزﻧﺪه ) (constructorﻣﻲ ﮔﻮﻳﻴﻢ .ﻳﻚ ﻣﺘﺪ
ﺳﺎزﻧﺪه ﻣﻲ ﺗﻮاﻧﺪ آرﮔﻮﻣﻨﺖ ﻫﺎﺋﻲ را ﻧﻴﺰ درﻳﺎﻓﺖ ﻛﺮده و ﺑﺮ اﺳﺎس آن ﻋﻤﻠﻴﺎت ﻣﻘﺪار دﻫﻲ اوﻟﻴﻪ را اﻧﺠﺎم
دﻫﺪ .ﺑﺮاي ارﺳﺎل آرﮔﻮﻣﻨﺖ ﺑﻪ ﻣﺘﺪ ﺳﺎزﻧﺪه ﺑﺎﻳﺪ روش زﻳﺮ را ﺑﻪ ﻛﺎر ﺑﺮد :
در ﺗﺼﻮﻳﺮ ﻓﻮق ﻳﻚ ﺷﺊ از ﻛﻼس adderﻣﻲ ﺳﺎزد ﻛﻪ درون ﻛﻼس ﻣﺘﺪ ﺳﺎزﻧﺪه اﻳﻲ ﺑﺎ دو ورودي وﺟﻮد
دارد ﻛﻪ ورودي ﻫﺎي آن ﺑﻪ اﻳﻦ ﮔﻮﻧﻪ ارﺳﺎل ﺷﺪه اﺳﺖ .
ﻋﻤﻠﮕﺮد ﺗﻮاﺑﻊ ﺗﺨﺮﻳﺐ ﻛﻨﻨﺪه ﺑﺮ ﻋﻜﺲ ﺗﻮاﺑﻊ ﺳﺎزﻧﺪه اﺳﺖ و ﺑﻪ ﻫﻨﮕﺎم از ﺑﻴﻦ رﻓﺘﻦ اﺷﻴﺎء ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ
ﺷﻮﻧﺪ .اﻟﺒﺘﻪ ﺑﻪ دﻟﻴﻞ اﻳﻨﻜﻪ PHPﺧﻮدش ﺗﻤﺎﻣﻲ ﻣﻨﺎﺑﻊ را ﺑﻌﺪ از اﺳﺘﻔﺎده رﻫﺎ ﻣﻲ ﻧﻤﺎﻳﺪ ,ﺗﻮاﺑﻊ ﺗﺨﺮﻳﺐ
ﻛﻨﻨﺪه از اﻫﻤﻴﺖ ﻛﻤﺘﺮي ﻧﺴﺒﺖ ﺑﻪ ﺗﻮاﺑﻊ ﺳﺎزﻧﺪه ﺑﺮ ﺧﻮردار اﺳﺖ .ﺗﻮاﺑﻊ ﺗﺨﺮﻳﺐ ﻛﻨﻨﺪه در ﺷﺮاﻳﻂ زﻳﺮ
ﻓﺮاﺧﻮاﻧﻲ ﻣﻲ ﺷﻮد :
68 | P a g e
ﺑﻪ ﻣﺜﺎل destructﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
روش ﻫﺎي دﺳﺘﻴﺎﺑﻲ
ﻳﻜﻲ از ﻣﺰاﻳﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا اﺳﺘﻔﺎده از اﻣﻜﺎن ﻛﭙﺴﻮﻟﻪ ﺳﺎزي اﺳﺖ .ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن ﺑﺎ ﻛﻤﻚ اﻳﻦ
ﻗﺎﺑﻠﻴﺖ ﻣﻲ ﺗﻮاﻧﻨﺪ دﺳﺘﺮﺳﻲ ﺑﻪ ﺧﺎﺻﻴﺖ ﻫﺎ و ﻣﺘﺪ ﻫﺎي اﺷﻴﺎء را ﻣﺤﺪود ﻧﻤﺎﻳﻨﺪ .ﺑﻴﺸﺘﺮ زﺑﺎن ﻫﺎي ﺑﺮﻧﺎﻣﻪ
ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا ﻣﺎﻧﻨﺪ C++ , java , PHPﺳﻪ روش دﺳﺘﻴﺎﺑﻲ public , private , protectedرا ﺑﺮاي
ﻣﺤﺪود ﻛﺮدن دﺳﺘﺮﺳﻲ ﺑﻪ ﺧﺎﺻﻴﺖ ﻫﺎ و ﻣﺘﺪ ﻫﺎ ﻣﻮﺟﻮد در ﻛﻼس ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲ دﻫﻨﺪ .ﺑﻪ ﻫﻨﮕﺎم
ﺗﻌﺮﻳﻒ ﻫﺮ ﻳﻚ از ﻣﺘﻐﻴﻴﺮ ﻫﺎ و ﻣﺘﺪ ﻫﺎي ﻣﻮﺟﻮد در ﻛﻼس ﺑﺮاي ﻣﺤﺪود ﻛﺮدن دﺳﺘﺮﺳﻲ ﺑﻪ آن ﻫﺎ ﺑﺎﻳﺪ ﻳﻜﻲ
از ﺳﻪ روش دﺳﺘﻴﺎﺑﻲ public , private , protectedرا ﺑﻪ ﻛﺎر ﺑﺒﺮﻳﻢ .در ﺻﻮرﺗﻲ ﻛﻪ ﺑﺮاي ﻣﺘﻐﻴﻴﺮ ﻳﺎ ﻣﺘﺪ
ﻫﺎ روش دﺳﺘﻴﺎﺑﻲ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻧﺸﻮد ,روش دﺳﺘﻴﺎﺑﻲ آن publiceدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮد .
69 | P a g e
) Privateﺧﺼﻮﺻﻲ( :ﻓﻴﻠﺪ ﻫﺎ و ﻣﺘﺪ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺻﻮرت ﺧﺼﻮﺻﻲ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ,اﺟﺎزه دﺳﺘﺮﺳﻲ
از ﺑﻴﺮون ﻛﻼس را ﻧﺪارﻧﺪ .اﻟﺒﺘﻪ ﻫﺮ ﻣﺘﺪي درون ﻛﻼس ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ آن ﻫﺎ دﺳﺘﺮﺳﻲ داﺷﺘﻪ ﺑﺎﺷﺪ و در
واﻗﻊ ﻓﻘﻂ از ﺑﻴﺮون ﻛﻼس )از ﻃﺮﻳﻖ اﺷﻴﺎء اﻳﺠﺎد ﺷﺪه از ﻛﻼس( ﻗﺎﺑﻞ دﺳﺘﺮس ﻧﻴﺴﺘﻨﺪ .
ﺧﺮوﺟﻲ
در ﻣﺜﺎل ﻓﻮق ﻫﻤﺎن ﮔﻮﻧﻪ ﻛﻪ ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﺪ ﭼﻮن ﻣﺘﺪ )( sاز ﻧﻮع ﺧﺼﻮﺻﻲ اﺳﺖ و در ﺑﻴﺮون ﻛﻼس ﻗﺎﺑﻞ
اﺳﺘﻔﺎده ﻧﻴﺴﺖ ﺑﺨﺎﻃﺮ اﻳﻦ اﺳﺖ ﻛﻪ اﻳﻦ ﻣﺜﺎل در زﻣﺎن اﺟﺮا errorداده اﺳﺖ .
) Publicﻋﻤﻮﻣﻲ(
ﻫﺮ ﻋﻨﺼﺮي از ﻛﻼس )اﻋﻢ از ﻓﻴﻠﺪ ﻳﺎ ﻣﺘﺪ( ﻛﻪ ﺑﻪ ﺻﻮرت ﻋﻤﻮﻣﻲ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد ,ﺑﻪ راﺣﺘﻲ ﺗﻮﺳﻂ اﺷﻴﺎء
اﻳﺠﺎد ﺷﺪه از ﻛﻼس )ﺑﻴﺮون ﻛﻼس( ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ .
اﮔﺮ ﻳﻚ ﻋﻨﺼﺮ ﺑﻪ ﺻﻮرت ﻣﺤﺎﻓﻈﺖ ﺷﺪه ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎﺷﺪ ,ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﻴﺪ از آن در ﺧﻮد ﻛﻼس اﺳﺘﻔﺎده
ﻛﻨﻴﺪ و از ﻃﺮﻳﻖ اﺷﻴﺎء )ﺑﻴﺮون ﻛﻼس( ﻗﺎﺑﻞ دﺳﺘﺮس ﻧﻴﺴﺖ .ﺗﻔﺎوت ﻣﺤﺎﻓﻈﺖ ﺷﺪه ﻳﺎ ﻋﻤﻮﻣﻲ اﻳﻦ اﺳﺖ در
70 | P a g e
ﻛﻼس ﻫﺎي ﻓﺮﻋﻲ ﻛﻪ از ﻛﻼس اﺻﻠﻲ ﻣﺸﺘﻖ ﻣﻲ ﺷﻮﻧﺪ ﻧﻴﺰ ﺗﻮاﻧﺎﻳﻲ دﺳﺘﺮﺳﻲ ﺑﻪ ﻋﻨﺎﺻﺮ ﻣﺤﺎﻇﺖ ﺷﺪه آن را
ﺧﻮاﻫﺪ داﺷﺖ .
ﺟﻮاب ﺷﺎﻳﺪ اﻳﻦ ﺳﻮال ﭘﻴﺶ ﺑﻴﺎﻳﺪ ﻛﻪ ﭼﺮا ﺑﺎﻳﺪ ﻳﻚ ﻋﻨﺼﺮ ﻛﻼس را ﺑﻪ ﺻﻮرت ﺧﺼﻮﺻﻲ ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ؟؟؟
اﻳﻦ ﺳﻮال ﺳﺎده اﺳﺖ ﺑﺮاي اﻣﻨﻴﺖ اﻳﻦ ﻛﺎر اﻧﺠﺎم ﻣﻲ ﺷﻮد ,اﮔﺮ ﻋﻨﺼﺮ ﻣﺮﺑﻮﻃﻪ ﺧﺼﻮﺻﻲ ﻧﺒﺎﺷﺪ ,اﻣﻜﺎن
ﺗﻐﻴﻴﺮ آن ﺑﻪ ﻫﺮ ﻣﻘﺪاري از ﻃﺮﻳﻖ اﺷﻴﺎء اﻳﺠﺎد ﺷﺪه از ﻛﻼس وﺟﻮد دارد .ﺑﺮاي ﻣﺜﺎل ﻓﺮض ﻛﻨﻴﺪ ﻛﻼﺳﻲ
ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد ﻛﻪ ﻓﻬﺮﺳﺖ ﺑﺮﻧﺪﮔﺎن ﻗﺮﻋﻪ ﻛﺸﻲ را از ﭘﺎﻳﮕﺎه داده اﺳﺘﺨﺮاج ﻛﺮده و ﺑﻪ ﻛﺎرﺑﺮ ﻧﺸﺎن ﻣﻲ دﻫﺪ
ﻃﺒﻴﻌﺘﺎ اﮔﺮ اﻳﻦ ﻓﻬﺮﺳﺖ ﺑﻪ ﺻﻮرت ﻋﻤﻮﻣﻲ ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎﺷﺪ ﻫﺮ ﺷﺨﺼﻲ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﺷﺊ از ﻛﻼس اﻳﺠﺎد
ﻛﻨﺪ و اﺳﻢ ﺧﻮد را ﺑﻪ آراﻳﻪ ﻣﻮﺟﻮد در آن ﻟﻴﺴﺖ اﺿﺎﻓﻪ ﻛﻨﺪ در ﺣﺎﻟﻲ ﻛﻪ اﮔﺮ اﻳﻦ ﻓﻴﻠﺪ ﺧﺼﻮﺻﻲ ﺑﺎﺷﺪ ﭼﻨﻴﻦ
اﻣﻜﺎﻧﻲ وﺟﻮد ﻧﺪارد و ﻣﻲ ﺗﻮان ﻳﻚ ﻣﺘﺪ ﻋﻤﻮﻣﻲ اﻳﺠﺎد ﻛﺮد ﺗﺎ ﺑﻪ ﻓﻴﻠﺪﺧﺼﻮﺻﻲ دﺳﺘﺮﺳﻲ داﺷﺘﻪ ﺑﺎﺷﺪ و آن
را ﭼﺎپ ﻛﻨﺪ .
ﻛﻠﻤﻪ ﻛﻠﻴﺪي staticدر ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا اﻫﻤﻴﺖ ﺑﺴﻴﺎر زﻳﺎدي دارد .ﻓﻴﻠﺪ ﻫﺎ و ﻣﺘﺪ ﻫﺎي اﻳﺴﺘﺎ ﻧﻘﺶ
اﺳﺎﺳﻲ دراﻟﮕﻮي ﻃﺮاﺣﻲ ﺑﺮﻧﺎﻣﻪ اﻳﻔﺎ ﻣﻲ ﻛﻨﻨﺪ ,ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﻣﻲ ﺗﻮاﻧﺪ ﺑﺎ اﺳﺘﻔﺎده از ﻓﻴﻠﺪ ﻫﺎ و ﻣﺘﺪ ﻫﺎي
اﻳﺴﺘﺎﺗﻴﻚ ﺑﺼﻮرت ﻣﺴﺘﻘﻴﻢ و ﺑﺪون اﻳﺠﺎد ﻫﺮ ﮔﻮﻧﻪ ﺷﺊ از ﻛﻼس ﻣﺮﺑﻮﻃﻪ ,دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﻨﺪ .ﻋﻨﺎﺻﺮ
اﻳﺴﺘﺎ ﻣﺸﺎﺑﻪ ﻳﻚ ﻋﻀﻮ ﺳﺮاﺳﺮي ﺑﺮاي ﻛﻼس ﻋﻤﻞ ﻣﻲ ﻛﻨﻨﺪ و ﺗﻤﺎم اﺷﻴﺎء اﻳﺠﺎد ﺷﺪه از آن ﻛﻼس ﻣﻲ ﺗﻮاﻧﻨﺪ
ﺑﻪ آن ﻫﺎ دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﻨﻨﺪ .ﺑﻪ ﻋﻼوه ﻓﻴﻠﺪ ﻫﺎي اﻳﺴﺘﺎ ﻫﻤﻴﺸﻪ آﺧﺮﻳﻦ وﺿﻌﻴﺖ )ﻣﻘﺪار( ﺧﻮد را ﺣﻔﻆ ﻣﻲ
ﻛﻨﻨﺪ .در ﻣﺜﺎل ﻓﻮق اﺑﺘﺪا ﻛﻼس humanاﻳﺠﺎد ﺷﺪه و درون آن ﻳﻚ ﻓﻴﻠﺪ و ﻣﺘﺪ اﻳﺴﺘﺎ اﻳﺠﺎد ﺷﺪه اﺳﺖ
.در داﺧﻞ ﻣﺘﺪ ﻫﺎي ﻛﻼس ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﺧﺎﺻﻴﺖ اﻳﺴﺘﺎ ﺑﺎﻳﺪ از ﻛﻠﻤﻪ self::اﺳﺘﻔﺎده ﻛﺮد .و ﻫﻤﭽﻨﻴﻦ
ﺑﺮاي اﺳﺘﻔﺎده از ﻣﺘﺪ ﻫﺎي اﻳﺴﺘﺎ درون ﻛﻼس از اﻳﻦ ﻛﻠﻤﻪ ﻛﻠﻴﺪي اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد اﻣﺎ در ﺑﻴﺮون ﻛﻼس
ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﺧﺎﺻﻴﺖ ﻫﺎي اﻳﺴﺘﺎ ﺑﺎﻳﺪ اﻳﻨﮕﻮﻧﻪ ﻋﻤﻞ ﻛﺮد :: :ﻧﺎم ﻛﻼس .
71 | P a g e
ﺑﻪ ﻣﺜﺎل staticfunctionﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
Self::و parent::
PHPاز دو ﻧﺎم ﻛﻼس رزرو ﺷﺪه ﺑﻪ ﻧﺎم self::و parent::اﺳﺘﻔﺎده ﻣﻲ ﻧﻤﺎﻳﺪ self:: .ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ
ﺧﺎﺻﻴﺖ ﻫﺎ و ﻣﺘﺪ ﻫﺎي اﺳﺘﺎﺗﻴﻚ و ﻫﻤﭽﻨﻴﻦ ﺛﺎﺑﺖ ﻫﺎ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻛﺎر ﻣﻲ رود parent::.ﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ
اﻋﻀﺎ ﻛﻼس واﻟﺪ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه از ﻛﻠﻤﻪ ﻛﻠﻴﺪي extendsاﺳﺘﻔﺎده
ﻣﻲ ﺷﻮد در اداﻣﻪ ﺑﻪ ﺑﺮرﺳﻲ ﻛﺎﻣﻞ آن ﻣﻲ ﭘﺮدازﻳﻢ .ﺑﻪ ﻣﺜﺎل self&parentﺗﻮﺟﻪ ﻛﻨﻴﺪ .
72 | P a g e
ﺧﺮوﺟﻲ
ﻓﻴﻠﺪ ﻫﺎي اﻳﺴﺘﺎ ﻣﻘﺪار ﻣﺸﺘﺮﻛﻲ در ﺗﻤﺎﻣﻲ اﺷﻴﺎء دارﻧﺪ و ﻣﻲ ﺗﻮان از آن ﻫﺎ ﺑﺮاي اﺷﺘﺮاك ﮔﺬاري ﻣﻘﺎدﻳﺮ
ﺑﻴﻦ اﺷﻴﺎء ﻳﻚ ﻛﻼس اﺳﺘﻔﺎده ﻧﻤﻮد .ﻋﻨﺎﺻﺮ اﻳﺴﺘﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮا را ﺑﺴﻴﺎر ﺷﺒﻴﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ
ﺳﻨﺘﻲ و روﻳﻪ ﮔﺮا ﻣﻲ ﻛﻨﻨﺪ ,ﺑﺪن ﺳﺎﺧﺖ اﺷﻴﺎء ﻣﻲ ﺗﻮان ﻣﺴﺘﻘﻴﻤﺎ ﻫﺮ ﺗﺎﺑﻌﻲ را ﺻﺪا زده و ﺑﻪ ﻫﺮ ﻓﻴﻠﺪي
دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻧﻤﻮد .ﺑﻪ ﻫﻤﻴﻦ ﻋﻠﺖ ﺑﺎﻳﺪ از ﻋﻨﺎﺻﺮ اﻳﺴﺘﺎ ﺑﺎ دﻗﺖ اﺳﺘﻔﺎده ﻧﻤﻮد .
ﺛﺎﺑﺖ ﻫﺎ در ﻛﻼس
ﺑﺮاي ﺗﻌﺮﻳﻒ ﺛﺎﺑﺖ در داﺧﻞ ﻛﻼس ﺑﺎﻳﺪ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي constاﺳﺘﻔﺎده ﻛﺮد .ﺛﺎﺑﺖ ﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه درون
ﻛﻼس ﺑﺎ ﺛﺎﺑﺖ ﻫﺎي ﻋﻤﻮﻣﻲ ﺗﻔﺎوت دارﻧﺪ و از ﺛﺎﺑﺖ ﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه درون ﻛﻼس ﻓﻘﻂ ﻣﻲ ﺗﻮان در داﺧﻞ
ﻛﻼس ﻳﺎ از ﻃﺮﻳﻖ اﺷﻴﺎء اﻳﺠﺎد ﺷﺪه از ﻛﻼس اﺳﺘﻔﺎده ﻧﻤﻮد .ﺛﺎﺑﺖ ﻫﺎ در ﻛﻼس ﺑﺎ اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ﻛﻠﻴﺪي
self::ﻗﺎﺑﻞ دﺳﺘﺮس ﻫﺴﺘﻨﺪ .
73 | P a g e
ﺑﻪ ﻣﺜﺎل constﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
وراﺛﺖ
ﻳﻜﻲ از ﺑﻬﺘﺮﻳﻦ وﻳﮋﮔﻲ ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮاﻳﻲ وراﺛﺖ اﺳﺖ ﻛﻪ ﻣﻲ ﺗﻮاﻧﻴﺪ ﻳﻚ ﻛﻼس را ﺗﻮﺳﻌﻪ داده
و ﻛﻼﺳﻲ ﻛﺎﻣﻼ ﺟﺪﻳﺪ ﺑﺴﺎزﻳﺪ .ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه )ﻓﺮزﻧﺪ( ﻣﻲ ﺗﻮاﻧﺪ ﺗﻤﺎﻣﻲ ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﻛﻼس ﭘﺎﻳﻪ )واﻟﺪ(
را داﺷﺘﻪ ﺑﺎﺷﺪ ﻳﺎ در ﺻﻮرت ﻧﻴﺎز ,ﺑﺮﺧﻲ از آن ﻫﺎ را ﺑﺎزﻧﻮﻳﺴﻲ ﻧﻤﺎﻳﺪ .ﻫﻤﭽﻨﻴﻦ ﻣﻲ ﺗﻮاﻧﺪ ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﻛﺎﻣﻼ
ﺟﺪﻳﺪي را ﻣﻌﺮﻓﻲ ﻛﻨﺪ ﻛﻪ در ﻛﻼس ﭘﺎﻳﻪ وﺟﻮد ﻧﺪارد .ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه ﻳﺎ ﻓﺮزﻧﺪ ﺑﺎﻳﺪ از
ﻛﻠﻤﻪ ﻛﻠﻴﺪي extendsاﺳﺘﻔﺎده ﻛﻨﻴﺪ .ﺑﻪ ﻣﺜﺎل extendsﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل اﺑﺘﺪا ﻳﻚ ﻛﻼس ﺑﻪ ﻧﺎم
personﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ﻛﻪ دو ﻓﻴﻠﺪ ﺳﺮاﺳﺮي دارد و ﻳﻚ ﻣﺘﺪ ﻛﻪ ﻣﻘﺎدﻳﺮ آن ﻓﻴﻠﺪ ﻫﺎ رو ﭼﺎپ ﻣﻲ ﻛﻨﺪ و
ﺳﭙﺲ ﻛﻼس دﻳﮕﺮي ﺑﻪ ﻧﺎم studentﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ﻛﻪ از ﻛﻼس اوﻟﻲ ﻣﺸﺘﻖ ﺷﺪه اﺳﺖ ﻛﻪ داراي ﻳﻚ
ﻓﻴﻠﺪ ﺳﺮاﺳﺮي اﺳﺖ و ﻳﻚ ﻣﺘﺪ ﻛﻪ ﻣﻘﺪار آن ﻓﻴﻠﺪ را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .در آﺧﺮ ﻳﻚ ﺷﺊ از ﻛﻼس student
ﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ و ﻣﻘﺪار ﻓﻴﻠﺪ ﻫﺎي ﺳﺮاﺳﺮي را ﻣﻘﺪار دﻫﻲ ﻣﻲ ﻛﻨﺪ وﻣﺘﺪ ﻫﺎي آن را اﺟﺮا ﻣﻲ ﻛﻨﺪ .
74 | P a g e
ﺧﺮوﺟﻲ
ﺑﻪ ﻃﻮر ﻛﻠﻲ ﻳﻚ ﻛﻼس ﺗﻨﻬﺎ ﻳﻚ ﻛﻼس ﭘﺎﻳﻪ ﻳﺎ واﻟﺪ ﻣﻲ ﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ وﻟﻲ ﻳﻚ ﻛﻼس واﻟﺪ ﻣﻲ ﺗﻮاﻧﺪ ﭼﻨﺪ
ﻛﻼس ﻓﺮزﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ .اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺗﺎ از ﻛﻼس ﺧﺎﺻﻲ ﻫﻴﭻ ﻛﻼس ﻓﺮزﻧﺪي اﻳﺠﺎد ﻧﺸﻮد ﺑﺎﻳﺪ از ﻛﻠﻤﻪ
ﻛﻠﻴﺪي finalاﺳﺘﻔﺎده ﺷﻮد ﺑﻪ ﻣﺜﺎل finalﺗﻮﺟﻪ ﻛﻨﻴﺪ .
75 | P a g e
ﺧﺮوﺟﻲ
در ﺻﻮرﺗﻲ ﻛﻪ ﻳﻚ ﻣﺘﺪ ﻫﻢ در ﻛﻼس واﻟﺪ و ﻫﻢ در ﻛﻼس ﻓﺮزﻧﺪ ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎﺷﺪ آﻧﮕﺎه اﺷﻴﺎﺋﻲ ﻛﻪ از
ﻛﻼس ﻓﺮزﻧﺪ اﻳﺠﺎد ﻣﻲ ﺷﻮﻧﺪ ,از ﻣﺘﺪ ﺗﻌﺮﻳﻒ ﺷﺪه در ﻛﻼس ﻓﺮزﻧﺪ اﺳﺘﻔﺎده ﺧﻮاﻫﻨﺪ ﻧﻤﻮد ﻫﻤﭽﻨﻴﻦ اﺷﻴﺎﺋﻲ
ﻛﻪ از ﻛﻼس واﻟﺪ اﻳﻦ ﻣﺘﺪ را ﺻﺪا ﻣﻲ زﻧﻨﺪ از ﻣﺘﺪ داﺧﻞ ﻛﻼس واﻟﺪ اﺳﺘﻔﺎده ﺧﻮاﻫﻨﺪ ﻧﻤﻮد .ﺑﻪ اﻳﻦ ﻣﺴﺌﻠﻪ
ﭼﻨﺪ رﻳﺨﺘﻲ ﻣﻲ ﮔﻮﻳﻨﺪ ﻳﻌﻨﻲ ﻓﺮﺧﻮاﻧﻲ ﻳﻚ ﻣﺘﺪ ﺑﺮ روي اﺷﻴﺎء ﻣﺨﺘﻠﻒ ,اﺟﺮا ﻫﺎي ﻣﺘﻔﺎوﺗﻲ را در ﭘﻲ ﺧﻮاﻫﻨﺪ
داﺷﺖ .ﺑﻪ ﻣﺜﺎل chandrikhtiﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
76 | P a g e
ﺟﻠﻮﮔﻴﺮي از ﺑﺎزﻧﻮﻳﺴﻲ ﻣﺘﺪ ﻫﺎ
ﺷﺎﻳﺪ ﮔﺎﻫﻲ اوﻗﺎت در ﺑﺮﻧﺎﻣﻪ ﻻزم ﺑﺎﺷﺪ ﻳﻚ ﻣﺘﺪ ﺑﻪ ﻧﺤﻮي ﻧﻮﺷﺘﻪ ﺷﻮد ﻛﻪ اﻣﻜﺎ ﺑﺎزﻧﻮﻳﺴﻲ آن در ﻛﻼس
ﻣﺸﺘﻖ ﺷﺪه وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ﺑﻪ ﺑﻴﺎن دﻳﮕﺮ ﺗﻤﺎﻣﻲ ﻛﻼﺳﻬﺎي ﻣﺸﺘﻖ ﺷﺪه از ﻛﻼس ﭘﺎﻳﻪ ﻧﻴﺰ آن را ﺑﻪ ﻫﻤﺎن
ﺷﻜﻞ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار دﻫﻨﺪ .ﺑﺮاي اﻳﻨﻜﺎر ﻫﻤﺎﻧﻨﺪ ﻛﻼس ﻫﺎ ﺑﺎﻳﺪ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي finalاﺳﺘﻔﺎده ﻛﺮد ﺑﻪ
ﻣﺜﺎل finalfunctionﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﺧﺮوﺟﻲ
اﻳﻦ ﻣﺜﺎل ﻫﻤﺎن ﻣﺜﺎل ﻗﺒﻠﻲ اﺳﺖ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي finalدر ﻣﺘﺪ ﻛﻼس واﻟﺪ اﺳﺘﻔﺎده ﺷﺪه
اﺳﺖ ﺑﺨﺎﻃﺮ ﻫﻤﻴﻦ اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺧﻄﺎ ﻣﻲ دﻫﺪ .
در داﺧﻞ ﻛﻼس ﻣﺸﺘﻖ ﺷﺪه ﻣﻲ ﺗﻮان ﺑﻪ ﻣﺘﺪ ﻫﺎي ﻛﻼس واﻟﺪ دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﺑﻪ ﻫﻤﻴﻦ ﻣﻨﻈﻮر ﺑﺎﻳﺪ از دﺳﺘﻮر
parent::اﺳﺘﻔﺎده ﻛﺮد .ﺑﻪ ﻣﺜﺎل parentfunctionﺗﻮﺟﻪ ﻛﻨﻴﺪ .
77 | P a g e
ﺧﺮوﺟﻲ
ﺗﺎﺑﻊ instanceof
در ﭘﺮوژه ﻫﺎي ﺑﺰرگ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦ ﻧﻜﺘﻪ ﻛﻪ آﻳﺎ ﺷﺊ ﻣﻮرد ﻧﻈﺮ از ﻛﻼس ﻣﺪ ﻧﻈﺮ ﻣﺎ ﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ.
ﺑﺮاي اﻳﻦ ﻛﺎر ﺑﺎﻳﺪ از ﺗﺎﺑﻊ instanceofاﺳﺘﻔﺎده ﻛﺮد اﻳﻦ ﺗﺎﺑﻊ ﻫﻤﭽﻨﻴﻦ ﺑﺮاي ﻛﻼس ﻫﺎﻳﻲ ﻛﻪ از ﻳﻚ ﻛﻼس
دﻳﮕﺮ ارث ﺑﺮي ﻛﺮده اﻧﺪ ﻧﻴﺰ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .اﮔﺮ ﺷﺊ از ﻛﻼس ﻣﻮرد ﻧﻈﺮ اﻳﺠﺎد ﺷﺪه ﺑﺎﺷﺪ ﻣﻘﺪار true
را ﺑﺮ ﻣﻴﮕﺮداﻧﺪ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﻘﺪار falseرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ .ﺑﻪ ﻣﺜﺎل instanceofﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ
ﻣﺜﺎل در دو ﺷﺮط ﻣﻘﺪار ﺗﺎﺑﻊ ﺑﺮاﺑﺮ trueﻣﻲ ﺷﻮد .
78 | P a g e
ﺧﺮوﺟﻲ
اﮔﺮ ﻳﻚ ﻛﻼس ﻓﺮزﻧﺪ داراي ﻣﺘﺪ ﺳﺎزﻧﺪه ﻧﺒﺎﺷﺪ ,ﺑﻪ ﻫﻨﮕﺎم اﻳﺠﺎد ﺷﺊ از ﻛﻼس ﻓﺮزﻧﺪ ﻣﺘﺪ ﺳﺎزﻧﺪه ﻛﻼس
واﻟﺪ ﺑﻪ ﻃﻮر ﺧﻮدﻛﺎر ﻓﺮاﺧﻮاﻧﻲ ﺧﻮاﻫﺪ ﺷﺪ .اﮔﺮ ﻛﻼس ﻓﺮزﻧﺪ ﺧﻮد داراي ﻳﻚ ﻣﺘﺪ ﺳﺎزﻧﺪه ﺑﺎﺷﺪ دﻳﮕﺮ ﻣﺘﺪ
ﺳﺎزﻧﺪه واﻟﺪ ﺑﻪ ﻃﻮر ﺧﻮدﻛﺎر ﻓﺮاﺧﻮاﻧﻲ ﻧﺨﻮاﻫﺪ ﺷﺪ .ﺑﻪ ﻣﺜﺎل constructparentﺗﻮﺟﻪ ﻛﻨﻴﺪ .
79 | P a g e
ﺧﺮوﺟﻲ
ﻳﻚ راﺑﻂ )واﺳﻂ( ﻣﺘﺪ ﻫﺎﻳﻲ را ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻳﻚ ﻛﻼس ﺑﺎﻳﺪ آن ﻫﺎ را ﭘﻴﺎده ﺳﺎزي ﻛﻨﺪ .اﻟﺒﺘﻪ راﺑﻂ ﻫﺎ
ﺗﻨﻬﺎ ﻣﺸﺨﺼﺎت ﻣﺘﺪ ﻣﻮرد ﻧﻈﺮ را ﺑﻴﺎن ﻣﻲ ﻛﻨﻨﺪ و درﺑﺎره ي ﻛﺪ ﻫﺎي داﺧﻞ ﻣﺘﺪ ﻫﻴﭻ ﺗﻮﺿﻴﺤﻲ ﻧﻤﻲ دﻫﺪ .
واﺳﻂ ﻫﺎ ﺑﺎ ﻛﻠﻤﻪ ﻛﻠﻴﺪي interfaceو ﻫﻤﺎﻧﻨﺪ ﻛﻼس ﻫﺎ اﻳﺠﺎد ﻣﻲ ﺷﻮﻧﺪ وﻟﻲ در واﺳﻂ ﻫﺎ ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ ﻫﻴﭻ
ﻣﺘﺪي ﭘﻴﺎده ﺳﺎزي ﻧﻤﻲ ﺷﻮد .ﺣﺎل اﮔﺮ ﻛﻼﺳﻲ ﺑﺨﻮاﻫﺪ اﻳﻦ راﺑﻂ را ﭘﻴﺎده ﺳﺎزي ﻛﻨﺪ ,ﺑﺎﻳﺪ ﺗﻤﺎﻣﻲ ﻣﺘﺪ ﻫﺎي
ﻣﺸﺨﺺ ﺷﺪه در آن را ﺑﺎ ﻫﻤﺎن ﺳﺎﺧﺘﺎر ,ﺑﺎزﻧﻮﻳﺴﻲ ﻧﻤﺎﻳﺪ .ﺑﺮاي اﻳﻨﻜﻪ ﻣﺸﺨﺺ ﻛﻨﻴﻢ ﻳﻚ ﻛﻼس ,ﻗﺮار
اﺳﺖ ﻳﻚ راﺑﻂ را ﭘﻴﺎده ﺳﺎزي ﻧﻤﺎﻳﺪ ﺑﺎﻳﺪ از ﻛﻠﻤﻪ ﻛﻠﻴﺪي implementsاﺳﺘﻔﺎده ﺷﻮد اﻳﻦ ﻛﻠﻤﻪ ﺑﺎﻳﺪ ﺑﻌﺪ از
اﺳﻢ ﻛﻼس و ﺳﭙﺲ ﻧﺎم راﺑﻂ اﺳﺘﻔﺎده ﺷﻮد .ﺑﻪ ﻣﺜﺎل interfaceﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل اﮔﺮ ﻧﺎم ﻫﺮ ﻳﻚ
از ﻣﺘﺪ ﻫﺎي داﺧﻞ ﻛﻼس و ﻳﺎ ﺳﺎﺧﺘﺎر آن ﻫﺎ ﺗﻐﻴﻴﺮ ﻳﺎﺑﺪ ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﺧﻄﺎ ﻣﻮاﺟﻪ ﺧﻮاﻫﺪ ﺷﺪ .
80 | P a g e
ﺧﺮوﺟﻲ
ﺗﻤﺎﻣﻲ ﻣﺘﺪﻫﺎﻳﻲ ﻛﻪ در ﻳﻚ واﺳﻂ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت publiceﺑﺎﺷﻨﺪ .ﻛﻼس ﻫﺎ ﻣﻤﻜﻦ اﺳﺖ
ﺑﻴﺶ از ﻳﻚ واﺳﻂ داﺷﺘﻪ ﺑﺎﺷﻨﺪ در اﻳﻦ ﺻﻮرت ﻧﺎم واﺳﻂ ﻫﺎ را ﺑﺎ ﻛﺎراﻛﺘﺮ ﻛﺎﻣﺎ ) (,از ﻫﻤﺪﻳﮕﺮ ﺟﺪا ﻣﻴﻜﻨﻴﻢ.
81 | P a g e
ﻓﺼﻞ دوازدﻫﻢ
ارﺗﺒﺎط ﺑﺎ ﭘﺎﻳﮕﺎه داده
ﺑﺮاي اﺗﺼﺎل و ﻛﺎر ﺑﺎ ﭘﺎﻳﮕﺎه داده Mysqlاز زﺑﺎن و دﺳﺘﻮرات PHPاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .از ﭘﺎﻳﮕﺎه داده ﺑﺮاي
ذﺧﻴﺮه اﻃﻼﻋﺎت اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﻗﺒﻞ از اﻳﻨﻜﻪ ﺑﺘﻮاﻧﻴﺪ ﺑﻪ اﻃﻼﻋﺎت ﻳﻚ ﭘﺎﻳﮕﺎه داده دﺳﺘﺮﺳﻲ داﺷﺘﻪ
ﺑﺎﺷﻴﺪ و آن ﻫﺎ را وﻳﺮاﻳﺶ ﻧﻤﺎﻳﻴﺪ .ﺑﺎﻳﺪ ﻳﻚ اﺗﺼﺎل ﺑﺎ ارﺗﺒﺎط ﻳﺎ دﻳﺘﺎﺑﻴﺲ ﺑﺮﻗﺮار ﺷﻮد .ﺑﺮاي اﻳﻦ ﻛﺎر ﺗﻮاﺑﻌﻲ
ﻣﺨﺘﻠﻔﻲ وﺟﻮد دارد ﻫﻤﻪ اﻳﻦ روش ﻫﺎ از ﻧﻈﺮ ﻗﺪرت و اﻣﻜﺎﻧﺎت ﻫﻤﺎﻧﻨﺪ ﻫﻢ ﻫﺴﻨﺘﺪ .اﺑﺘﺪا phpmyadmin
را ﺑﺎز ﻣﻲ ﻧﻤﺎﻳﻴﻢ .و ﻃﺒﻖ ﺗﺼﻮﻳﺮ ﮔﺰﻳﻨﻪ databasesرا اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﻴﻢ .
ﺑﻌﺪ از اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪ ﺑﺎﻻ ﺻﻔﺤﻪ ﭘﺎﻳﻴﻦ ﺑﺎز ﻣﻲ ﺷﻮد ﻛﻪ در ﺟﺎي ﺧﺎﻟﻲ اول ﻧﺎم ﭘﺎﻳﮕﺎه داده ﻣﻮرده ﻧﻈﺮ را ﻣﻲ
82 | P a g e
ﺑﻌﺪ در ﺳﻤﺖ راﺳﺖ ﻧﺎم ﭘﺎﻳﮕﺎه داده را اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﻴﻢ و ﺻﻔﺤﻪ ﭘﺎﻳﻴﻦ ﺑﺎز ﻣﻲ ﺷﻮد ﻛﻪ ﻧﺎم ﺟﺪول را در
ﺟﺎي ﺧﺎﻟﻲ اول و ﺗﻌﺪاد ﻓﻴﻠﺪ ﻫﺎ را در ﺟﺪول دوم ﻣﻲ ﻧﻮﻳﺴﻴﻢ و روي دﻛﻤﻪ Goﻛﻠﻴﻚ ﻣﻲ ﻛﻨﻴﻢ و ﻧﻮع ﻓﻴﻠﺪ
83 | P a g e
ﺑﺮاي اﺗﺼﺎل و ﻛﺎر ﺑﺎ ﭘﺎﻳﮕﺎه داده Mysqlاز زﺑﺎن و دﺳﺘﻮرات PHPاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .از ﭘﺎﻳﮕﺎه داده ﺑﺮاي
ذﺧﻴﺮه اﻃﻼﻋﺎت اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﻗﺒﻞ از اﻳﻨﻜﻪ ﺑﺘﻮاﻧﻴﺪ ﺑﻪ اﻃﻼﻋﺎت ﻳﻚ ﭘﺎﻳﮕﺎه داده دﺳﺘﺮﺳﻲ داﺷﺘﻪ
ﺑﺎﺷﻴﺪ و آن ﻫﺎ را وﻳﺮاﻳﺶ ﻧﻤﺎﻳﻴﺪ .ﺑﺎﻳﺪ ﻳﻚ اﺗﺼﺎل ﺑﺎ ارﺗﺒﺎط ﻳﺎ دﻳﺘﺎﺑﻴﺲ ﺑﺮﻗﺮار ﺷﻮد .ﺑﺮاي اﻳﻦ ﻛﺎر ﺗﻮاﺑﻌﻲ
ﻣﺨﺘﻠﻔﻲ وﺟﻮد دارد ﻫﻤﻪ اﻳﻦ روش ﻫﺎ از ﻧﻈﺮ ﻗﺪرت و اﻣﻜﺎﻧﺎت ﻫﻤﺎﻧﻨﺪ ﻫﻢ ﻫﺴﻨﺘﺪ .ﺑﺮاي اﻳﺠﺎد ارﺗﺒﺎط ﺑﺎ
ﭘﺎﻳﮕﺎه داده از ﻛﻼس mysqliاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ .اﻳﻦ ﺗﺎﺑﻊ 4ورودي از ﻛﺎرﺑﺮ ﻣﻲ ﮔﻴﺮد .ﻛﻪ در آن ﻫﺎ را در
زﻳﺮ ﻣﺸﺎﻫﺪه ﻣﻲ ﻛﻨﻴﺪ :
ﭘﺎراﻣﺘﺮ اول :ﻧﺎم ﺳﺮور mysqlي اﺳﺖ ﻛﻪ دﻳﺘﺎﺑﻴﺲ ﺷﻤﺎ روي آن ﻗﺮار دارد و ﺷﻤﺎ ﻣﻴﺨﻮاﻫﻴﺪ ﺑﻪ
آن ﻣﺘﺼﻞ ﺷﻮﻳﺪ .
ﭘﺎﻣﺘﺮ دوم :ﻧﺎم ﻛﺎرﺑﺮي اﺳﺖ ﻛﻪ در ﺳﺮور ﭘﺎﻳﮕﺎه داده ﺗﻌﺮﻳﻒ ﺷﺪه .
ﭘﺎراﻣﺘﺮ ﺳﻮم :ﻛﻠﻤﻪ ﻋﺒﻮر ﻣﺮﺗﺒﻂ ﺑﺎ ﻧﺎم ﻛﺎرﺑﺮي اﺳﺖ .
ﭘﺎراﻣﺘﺮ ﭼﻬﺎرم :ﻧﺎم ﭘﺎﻳﮕﺎه داده ﻣﻮرد ﻧﻈﺮ ﻣﺎ از ﺑﻴﻦ ﻫﻤﻪ ﭘﺎﻳﮕﺎه داده ﻫﺎي ﻣﻮﺟﻮد در ﺳﺮور اﺳﺖ .
84 | P a g e
ﺧﺮوﺟﻲ اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ connectionﺑﻪ دﻳﺘﺎﺑﻴﺲ ﻣﻮرد ﻧﻈﺮ اﺳﺖ .وﻗﺘﻲ ﻛﻪ ارﺗﺒﺎط ﺑﺮﻗﺮار ﺷﺪه ﺑﺎﺷﺪ ﻣﻲ
ﺗﻮاﻧﺪ ﺑﺎ اﺳﺘﻔﺎده از ﻣﺘﺪ queryاز ﻛﻼس mysqliﻋﻤﻠﻴﺎت ﺧﻮد را در ﭘﺎﻳﮕﺎه داده اﻧﺠﺎم داد .
دﺳﺘﻮر Insert into
اﻳﻦ دﺳﺘﻮر ﺑﺮاي درج رﻛﻮرد در ﺟﺪول ﻣﻮرد ﻧﻈﺮ ﻣﺎ ﺑﻪ ﻛﺎر ﻣﻲ رود .ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ
ﻣﻲ ﺑﺎﺷﺪ .
ﻓﺎﻳﻞ check.php
85 | P a g e
ﻓﺎﻳﻞ check.html
ﺑﺎ اﺟﺮا ﻣﺜﺎل ﻓﻮق اﺑﺘﺪا ﻳﻚ ﻓﺮم ﺑﺮاي ﮔﺮﻓﺘﻦ ورودي از ﻛﺎرﺑﺮ اﻳﺠﺎد ﺷﺪه اﺳﺖ ﻛﻪ ﺑﺎ ﻣﺘﺪ postورودي ﻫﺎ
رو ﺑﻪ check.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ .در ﻓﺎﻳﻞ check.phpدر ﺧﻂ اول اﺑﺘﺪا ﺑﺮرﺳﻲ ﺷﺪه اﺳﺖ ﻛﻪ آﻳﺎ اﻃﻼﻋﺎت
ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﻧﺸﺪه ﺑﺎﺷﺪ ﺑﺎ ﺗﺎﺑﻊ headerدر زﺑﺎن PHPﻣﺮورﮔﺮ دوﺑﺎره
ﺑﻪ ﺻﻔﺤﻪ ﻓﺮم ﺑﺮ ﻣﻴﮕﺮدد اﮔﺮ اﻃﻼﻋﺎت ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ اﺑﺘﺪا اﻃﻼﻋﺎت درﻳﺎﻓﺘﻲ را در ﻣﺘﻐﻴﻴﺮي ذﺧﻴﺮه ﺷﺪه
اﺳﺖ و در ﺧﻂ ﭼﻬﺎرم از ﺗﺎﺑﻊ mysqliﺑﺮاي اﺗﺼﺎل اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ ﻛﻪ ﺳﺮور ﻣﺎ localhostو ﻳﻮزر ﻣﺎ
rootﺑﺪون ﭘﺴﻮرد اﺳﺖ و اﺳﻢ ﭘﺎﻳﮕﺎه داده ﻣﺎ schoolﻣﻲ ﺑﺎﺷﺪ ﻛﻪ در ﻛﻨﺎر ﺗﺎﺑﻊ mysqliاز ﻛﺎراﻛﺘﺮ @
اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ ﻛﻪ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ اﮔﺮ اﻳﻦ ﺗﺎﺑﻊ ﻧﺘﻮاﻧﺪ ﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﻮرده ﻧﻈﺮ ﻣﺘﺼﻞ ﺷﻮد
ﻫﻴﭻ errorﺑﺮاي ﻛﺎرﺑﺮ ﭼﺎپ ﻧﻤﻲ ﺷﻮد و ﻣﺎ ﺧﻮدﻣﺎن ﻣﻲ ﺧﻮاﻫﻴﻢ اﻳﻦ ﺧﻄﺎ را ﻣﺪﻳﺮﻳﺖ ﻛﻨﻴﻢ .در ﺷﺮط ﺑﻌﺪي
اﺑﺘﺪا ﺑﺮرﺳﻲ ﺷﺪه اﺳﺖ ﻛﻪ آﻳﺎ اﺗﺼﺎل درﺳﺖ و ﻛﺎﻣﻞ اﻧﺠﺎم ﺷﺪه اﺳﺖ و ﺧﻄﺎﻳﻲ ﻧﺪارد اﮔﺮ ﺧﻄﺎﻳﻲ داﺷﺖ
ﭘﻴﻐﺎم error connectﺑﺮاي ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد اﮔﺮ ﺧﻄﺎﻳﻲ ﻧﺪاﺷﺖ ﺑﺎ اﺳﺘﻔﺎده از mysqli_query
ﻛﻮﺋﺮي ﻣﻮرد ﻧﻈﺮﻣﺎن را ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻛﻮﺋﺮي درج در ﭘﺎﻳﮕﺎه داده ﻣﻲ ﺑﺎﺷﺪ و در آﺧﺮ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ
mysqli_cliseارﺗﺒﺎط را ﻣﻲ ﺑﻨﺪﻳﻢ و ﻣﺮور ﮔﺮ را ﺑﻪ ﺻﻔﺤﻪ ﻓﺮم ﻣﻲ ﻓﺮﺳﺘﻴﻢ .
در ﻣﺜﺎل ﻗﺒﻞ ﻧﺤﻮه درج در ﭘﺎﻳﮕﺎه داه را آﻣﻮﺧﺘﻴﺪ .ﻫﺮ ﮔﺎه در ﭘﺎﻳﮕﺎه داده ﻧﻴﺎز ﺑﺎﺷﺪ ﺗﺎ اﻃﻼﻋﺎت ﺧﺎﺻﻲ را از
ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺟﺪول اﺳﺘﺨﺮاج ﻛﺮده و آن ﻫﺎ را در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ از دﺳﺘﻮر selectاﺳﺘﻔﺎده ﻣﻲ ﺷﻮد
.ﺑﻪ ﻣﺜﺎل select.phpﺗﻮﺟﻪ ﻛﻨﻴﺪ .
86 | P a g e
ﺧﺮوﺟﻲ
در اﻳﻦ ﻣﺜﺎل اﺑﺘﺪا ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ mysqliﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﻮرده ﻧﻈﺮ ﻣﺘﺼﻞ ﺷﺪه اﻳﻢ و ﻫﻤﺎﻧﻨﺪ ﻣﺜﺎل
ﻗﺒﻞ ﻣﺪﻳﺮﻳﺖ ﺧﻄﺎ را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر @ ﺑﻪ دﺳﺖ ﮔﺮﻓﺘﻪ اﻳﻢ .اﺑﺘﺪا ﺑﺎ دﺳﺘﺮ ﺷﺮﻃﻲ ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ
ﻛﻪ آﻳﺎ ارﺗﺒﺎط ﺧﻄﺎ دارد ﻳﺎ ﺧﻴﺮ اﮔﺮ دارد ﭘﻴﻐﺎﻣﻲ ﺑﺮاي ﻛﺎرﺑﺮ ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻛﻮﺋﺮي ﻣﺪ ﻧﻈﺮ
ﺧﻮد را ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ دﺳﺘﻮر selectﻣﻲ ﺑﺎﺷﺪ و ﺑﺎ اﺳﺘﻔﺎده از ﻣﺘﺪ queryاﻳﻦ ﺗﺎﺑﻊ ﻣﻘﺪار ﺑﺎزﮔﺸﺘﻲ را در
ﻣﺘﻐﻴﻴﺮي ذﺧﻴﺮ ه ﻣﻲ ﻛﻨﻴﻢ .ﺑﺎ دﺳﺘﻮر echoدﺳﺘﻮر ﺳﺎﺧﺖ ﺟﺪول را ﻣﻲ ﻧﻮﻳﺴﻴﻢ .ﺑﺮاي ﭼﺎپ ﺧﺮوﺟﻲ روش
ﻫﺎي ﻣﺘﺪاوﻟﻲ وﺟﻮد دارد در اﻳﻨﺠﺎ ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ و ﺗﺎﺑﻊ mysqli_fetch_assocاﻳﻨﻜﺎر اﻧﺠﺎم ﺷﺪه
اﺳﺖ.
87 | P a g e
اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ورودي ﻣﻲ ﮔﻴﺮد ﻛﻪ ﻫﻤﺎن ﻣﻘﺪار ﺑﺎزﮔﺸﺘﻲ ﺗﺎﺑﻊ mysqli_queryﻣﻲ ﺑﺎﺷﺪ و ﺧﺮوﺟﻲ اﻳﻦ ﺗﺎﺑﻊ
ﻳﻚ آراﻳﻪ ﻣﻲ ﺑﺎﺷﺪ .ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ اﻳﻦ آراﻳﻪ ﭘﻴﻤﺎﻳﺶ ﻣﻲ ﺷﻮد ﺗﺎ ﺑﻪ آﺧﺮ ﺑﺮﺳﺪ و ﻣﻘﺪار falseرا
ﺗﻮﻟﻴﺪ ﻛﻦ و از ﺣﻠﻘﻪ ﺧﺎرج ﺷﻮد ﺑﻨﺎ ﺑﺮاﻳﻦ ﻛﻞ آراﻳﻪ ﭼﺎپ ﻣﻲ ﺷﻮد و در آﺧﺮ ارﺗﺒﺎط را ﺑﺎ ﭘﺎﻳﮕﺎه داده را ﻗﻄﻊ
ﻣﻲ ﻛﻨﻴﻢ .
دﺳﺘﻮر where
اﻣﺎ ﺑﺮاي اﻳﻨﻜﻪ ﻣﺎ ﺑﺘﻮاﻧﻴﻢ در ﻛﻮﺋﺮي ﻫﺎي ﺧﻮد از ﻋﺒﺎرات ﺷﺮﻃﻲ ﻫﻢ اﺳﺘﻔﺎده ﻛﻨﻴﻢ از ﻋﺒﺎرت whereاﺳﺘﻔﺎده
ﻣﻲ ﻛﻨﻴﻢ ﺑﺮاي ﻣﺜﺎل ﻣﺎ ﻣﻴﺨﻮاﻫﻢ در ﭘﺎﻳﮕﺎه داده ﻳﻮزر ﻫﺎ ﺷﺨﺺ ﺧﺎﺻﻲ را ﺟﺴﺘﺠﻮ ﻛﻨﻴﻢ .ﺑﻪ ﻣﺜﺎل 16ﺗﻮﺟﻪ
ﻛﻨﻴﺪ .
ﻓﺎﻳﻞ 16.html
ﻓﺎﻳﻞ 16.php
88 | P a g e
در اﻳﻦ ﻣﺜﺎل ﻧﺎم و ﻓﺎﻣﻴﻠﻲ ﺑﺮاي ﺟﺴﺘﺠﻮ در ﭘﺎﻳﮕﺎه داده از ﻛﺎرﺑﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮد و ﺑﻪ ﺻﻔﺤﻪ 16.phpارﺳﺎل
ﻣﻲ ﺷﻮد در اﻳﻦ ﺻﻔﺤﻪ اﺑﺘﺪا ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﭘﺎراﻣﺘﺮ ﻧﺎم و ﻓﺎﻣﻴﻠﻲ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ
ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﻧﺸﺪه ﺑﺎﺷﺪ ﻳﻌﻨﻲ اﻳﻦ آدرس دﺳﺘﻲ وارد ﺷﺪه اﺳﺖ ﺑﺮاي ﻫﻤﻴﻦ ﻣﺮورﮔﺮ را ﺑﻪ ﺻﻔﺤﻪ وارد
ﻛﺮدن ﻓﺮم ﻣﻴﻔﺮﺳﺘﻢ اﮔﺮ ﭘﺎراﻣﺘﺮ ﻫﺎ ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ mysqliﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﻮرد ﻧﻈﺮ
ﻣﺘﺼﻞ ﻣﻲ ﺷﻮﻳﻢ و از ﻛﺎراﻛﺘﺮ @ ﺑﺮاي ﺟﻠﻮ ﮔﻴﺮي اﻳﺠﺎد ﺧﻄﺎ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ و ﺧﻮدﻣﺎن ﻣﺪﻳﺮﻳﺖ ﺧﻄﺎ را ﺑﻪ
ﻋﻬﺪه ﻣﻲ ﮔﻴﺮﻳﻢ .دﺳﺘﻮر ﺷﺮﻃﻲ ﻣﻴﻨﻮﻳﺴﻢ ﺑﺮاي ﭼﻚ ﻛﺮدن درﺳﺖ ﺑﻮدن اﺗﺼﺎل ﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﻲ ﻧﻮﻳﺴﻢ
اﮔﺮ ارﺗﺒﺎط ﺑﺮﻗﺮار ﺑﻮد ﻛﻮﺋﺮي ﻣﺪ ﻧﻈﺮ را ﻣﻲ ﻧﻮﻳﺴﻢ و ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر whereﺷﺮط ﻣﻮرد ﻧﻈﺮﻣﺎ را ﻣﻲ
ﻧﻮﻳﺴﻴﻢ اﻳﻦ ﺷﺮط ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻧﺎم و ﻓﺎﻣﻴﻠﻲ درﻳﺎﻓﺘﻲ در ﺟﺪول userوﺟﻮد دارد ﻳﺎ ﺧﻴﺮ .ﺗﺎﺑﻊ
mysqli_num_rowsﺗﻌﺪاد رﻛﻮرد ﺑﺮﮔﺸﺘﻲ از ﻛﻮﺋﺮي ﻣﺪ ﻧﻈﺮﻣﺎن را ﺑﺮ ﻣﻴﮕﻴﺮداﻧﺪ اﻳﻦ دﺳﺘﻮر ﻳﻚ ورودي
ﻣﻲ ﮔﻴﺮد ﻛﻪ ﻫﻤﺎن ﺧﺮوﺟﻲ دﺳﺘﻮر msqli_queryﻣﻲ ﺑﺎﺷﺪ .ﺑﻨﺎ ﺑﺮاﻳﻦ اﮔﻪ دﺳﺘﻮر mysqli_num_rows
ﺑﺮاﺑﺮ ﻳﻚ ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﻳﻚ رﻛﻮرد در ﭘﺎﻳﮕﺎه داده ﻣﻮﺟﻮد اﺳﺖ ﻛﻪ اﻳﻦ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ ﺟﺴﺘﺠﻮ ﻣﻮرد
ﻧﻈﺮ در ﭘﺎﻳﮕﺎه داده ﻣﻮﺟﻮد اﺳﺖ ﺑﺨﺎﻃﺮ ﻫﻤﻴﻦ ﭘﻴﻐﺎم Yes Foundﺑﺮاي ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد و در ﻏﻴﺮ
اﻳﻦ ﺻﻮرت ﭘﻴﻐﺎم Not Foundﺑﻪ ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ دادﻫﺪ ﻣﻲ ﺷﻮد .
دﺳﺘﻮر order by
دﺳﺘﻮر selectاﻃﻼﻋﺎت ﺗﻤﺎﻣﻲ ﻓﻴﻠﺪ ﻫﺎي ﺗﻌﻴﻴﻦ ﺷﺪه ﺑﺮاي آن را ﺑﺮ اﺳﺎس ﻓﻴﻠﺪ اول ﻣﺮﺗﺐ ﻛﺮده و ﻧﻤﺎﻳﺶ
ﻣﻲ دﻫﺪ .اﻣﺎم ﻣﻤﻜﻦ اﺳﺖ ﺷﻤﺎ ﺑﺨﻮاﻫﻴﺪ اﻃﻼﻋﺎت را ﺑﺮ اﺳﺎس ﻣﻘﺪار ﻳﻚ ﻓﻴﻠﺪ دﻳﮕﺮ ﻏﻴﺮ از ﻓﻴﻠﺪ اول
ﺑﺼﻮرت ﻫﻤﺰﻣﺎن ﻣﺮﺗﺐ ﻧﻤﺎﻳﻴﺪ ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﺑﺎﻳﺴﺘﻲ ﭘﺲ از دﺳﺘﻮر selectﻧﺎم ﻓﻴﻠﺪ ﻳﺎ دو ﻓﻴﻠﺪي ﻛﻪ
ﻣﻴﺨﻮاﻫﻴﺪ اﻃﻼﻋﺎت ﺧﺮوﺟﻲ ﺑﺮ اﺳﺎس آن ﻣﺮﺗﺐ ﺷﻮﻧﺪ را ﺑﻪ ﺗﺮﺗﻴﺐ در ﻣﻘﺎﺑﻞ ﻋﺒﺎرت order byﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ.
ﻧﻜﺘﻪ :اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت ﭘﻴﺶ ﻓﺮض اﻃﻼﻋﺎت را ﺑﻪ ﺻﻮرت ﺻﻌﻮدي )ﻛﻮﭼﻚ ﺑﻪ ﺑﺰرگ( ﻣﺮﺗﺐ ﻣﻲ ﻛﻨﺪ
ﺑﺮاي اﻳﻨﻜﻪ از ﻧﺰوﻟﻲ )ﺑﺰرگ ﺑﻪ ﻛﻮﭼﻚ( ﻣﺮﺗﺐ ﻛﻨﺪ ﭘﺲ از ﺗﺎﻳﭗ ﻓﻴﻠﺪ ﻫﺎ از ﻋﺒﺎرت DESCاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ.
ﺑﻪ ﻣﺜﺎل orderbyﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮر ﻣﻘﺪار ﺧﺮوﺟﻲ ﺑﺮ اﺳﺎس ﻧﺎم ﺑﻪ
ﺻﻮرت ﻧﺰوﻟﻲ ﻣﺮﺗﺐ ﺷﺪه اﺳﺖ .
89 | P a g e
ﺧﺮوﺟﻲ
ﺑﻪ ﻣﺜﺎل orderby2ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل idﺑﻪ ﺻﻮرت ﻧﺰوﻟﻲ در ﺧﺮوﺟﻲ ﭼﺎپ ﺷﺪه اﺳﺖ .
90 | P a g e
ﺧﺮوﺟﻲ
دﺳﺘﻮر Update
اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺗﻐﻴﻴﺮ ﻣﺠﻮد در ﻳﻚ ﻓﻴﻠﺪ ﺑﺎ ﻣﻘﺪار ﺟﺪﻳﺪ اﺳﺖ .ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺷﻜﻞ زﻳﺮ اﺳﺖ
ﺑﻪ ﺗﺼﻮﻳﺮ ﻓﻮق دﻗﺖ ﻛﻨﻴﺪ .
91 | P a g e
در اﻳﻦ ﺗﺼﻮﻳﺮ اﮔﺮ ﺧﻮاﺳﺘﻴﻢ ﻣﻘﺪار ﭼﻨﺪ ﻓﻴﻠﺪ را ﺗﻐﻴﻴﺮ دﻫﻴﻢ در ﺟﻠﻮ دﺳﺘﻮر setاز ﻛﺎﻣﺎ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ.
ﺑﻪ ﻣﺜﺎل 16-3ﺗﻮوﺟﻪ ﻛﻨﻴﺪ .ﻣﻘﺪار ﺟﺪول ﻣﺎ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ .
ﺑﺎ اﺟﺮا ﻣﺜﺎل ﺑﺎﻻ ﺟﺪول ﻣﺎ ﺗﻐﻴﻴﺮ ﻣﻲ ﻛﻨﺪ ﺑﻪ ﺗﺼﻮﻳﺮ ﻓﻮق ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﺗﺎ ﺗﻐﻴﻴﺮ را ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ .
92 | P a g e
دﺳﺘﻮر Delete
از اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺣﺬف اﻃﻼﻋﺎت ﻳﻚ رﻛﻮرد اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد .ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ
اﺳﺖ.
ﺑﻪ ﻣﺜﺎل deleteﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ ﻣﺜﺎل از ﭘﺎﻳﮕﺎه داده ﻣﻮرده ﻧﻈﺮ ﻣﺎ رﻛﻮردي ﻛﻪ idآن ﺑﺮار 5ﺑﺎﺷﺪ از
ﺟﺪول ﺣﺬف ﻣﻲ ﺷﻮد .
از اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺣﺬف ﻛﻞ اﻃﻼﻋﺎت ﻫﻢ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد ﺑﺮاي ﺣﺬف ﻛﻞ اﻃﻼﻋﺎت ﺑﻪ ﻣﺜﺎل delete2ﺗﻮﺟﻪ
ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﺗﻤﺎم رﻛﻮرد ﻫﺎي ﺟﺪول userﭘﺎك ﻣﻲ ﺷﻮد .ﺑﺮاي اﻳﻨﻜﺎر دو روش وﺟﻮد دارد .
93 | P a g e
ﻓﺼﻞ ﺳﻴﺰدﻫﻢ
Ajaxدر jQuery
Ajaxﻫﻨﺮ ﺗﺒﺎدل داده ﻫﺎ ﺑﺎ ﺳﺮور و ﺑﺮوز رﺳﺎﻧﻲ ﺑﺨﺶ ﻫﺎﻳﻲ از ﻳﻚ ﺻﻔﺤﻪ وب ﺑﺪون ﺑﺎرﮔﺬاري ﻣﺠﺪد ﺻﻔﺤﻪ
اﺳﺖ .
ﻣﺘﺪ )( $.postﺑﺎ اﺳﺘﻔﺎده از روش POSTداده اي را از ﺳﺮور درﺧﻮاﺳﺖ ﻣﻲ ﻛﻨﺪ .ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر
ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ .
ﺑﻪ ﻣﺜﺎل زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﻳﻚ ورودي ﺑﺮاي درﻳﺎﻓﺖ از ﻛﺎرﺑﺮ اﻳﺠﺎد ﺷﺪه اﺳﺖ ﻛﻪ ﺧﺎﺻﻴﺖ
onkeyupآن ﺗﺎﺑﻌﻲ را اﺟﺮا ﻣﻲ ﻛﻨﺪ id .اﻳﻦ ورودي ﺑﺮاﺑﺮ fداده ﺷﺪه اﺳﺖ و ﺳﭙﺲ ﺗﮓ divاﻳﺠﺎد ﺷﺪه
اﺳﺖ ﻛﻪ idآن ﺑﺮاﺑﺮ sssﻗﺮار داده ﺷﺪه .اﺑﺘﺪا Jqueryرا در ﺻﻔﺤﻪ وارد ﻣﻲ ﻛﻨﻴﻢ و ﺳﭙﺲ ﻳﻚ ﺗﺎﺑﻊ ﺟﺎوا
ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ در اﻳﻦ ﺗﺎﺑﻊ از ﺗﺎﺑﻊ $.postاﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻴﻢ آرﮔﻮﻣﻨﺖ اوﻟﻲ اﻳﻦ ﺗﺎﺑﻊ را آدرس ﺻﻔﺤﻪ
aja.phpاﺳﺖ ﻛﻪ در آن ﻓﻘﻂ دﺳﺘﻮر echoﺑﺮاي ﭼﺎپ ﻣﻘﺪار درﻳﺎﻓﺘﻲ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ آرﮔﻮﻣﻨﺖ دوﻣﻲ
آن ﻣﺎ ﻣﺘﻐﻴﻴﺮي ﺑﻪ ﻧﺎم nameرا اﻳﺠﺎد ﻛﺮده و ﻣﻘﺪار آن را ﺑﺎ ﻛﻤﻚ Idورودي ﺑﺮاﺑﺮ ﻣﻘﺪار ورودي ﻗﺮا ر
داده اﻳﻢ ﺳﭙﺲ آرﮔﻮﻣﻨﺖ ﺳﻮم ﻳﻚ ﺗﺎﺑﻊ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ ﻳﻚ ورودي دارد ﻛﻪ اﻳﻦ ورودي ﻫﻤﺎن ﻣﻘﺪار
94 | P a g e
ﺑﺮﮔﺸﺘﻲ از ﺻﻔﺤﻪ aja.phpاﺳﺖ و ﺑﺎ اﺳﺘﻔﺎده از idﺗﮓ divﻣﺎ اﻳﻦ dataﺑﺮﮔﺸﺘﻲ را درون آن ﭼﺎپ ﻣﻲ
ﻛﻨﻴﻢ .ﺑﻪ ﻣﺜﺎل ajaﺗﻮﺟﻪ ﻛﻨﻴﺪ .
ﻓﺎﻳﻞ aja.html
ﻓﺎﻳﻞ aja.php
در ﻓﺎﻳﻞ aja.phpاﺑﺘﺪا ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ورودي ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل
ﻧﺸﺪه ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﻛﺎرﺑﺮ اﻳﻦ آدرس را دﺳﺘﻲ وارد ﻛﺮده و ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( headerﺻﻔﺤﻪ ﻣﺮورﮔﺮ را
ﺑﻪ ﺻﻔﺤﻪ ورود اﻃﻼﻋﺎت ارﺟﺎع ﻣﻲ دﻫﻴﻢ .
ﺑﻪ ﻣﺜﺎل 17ﺗﻮﺟﻪ ﻛﻨﻴﺪ ,در اﻳﻦ ﻣﺜﺎل ﻫﻤﺎﻧﻨﺪ ﻣﺜﺎل ﻗﺒﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﺟﺎوا ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ در آن از ﺗﺎﺑﻊ
)( $.postاﺳﺘﻔﺎده ﺷﺪه اﺳﺖ و ﻣﻘﺪار ورودي را ﺑﻪ ﺻﻔﺤﻪ 17.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ .در اﻳﻦ ﺻﻔﺤﻪ ﺑﻌﺪ از
اﻳﻨﻜﻪ ﭼﻚ ﻣﻲ ﺷﻮد ﻛﻪ آﻳﺎ ورودي ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﺘﺼﻞ ﺷﺪه و ﺑﺎ اﺳﺘﻔﺎده
از دﺳﺘﻮر like ﻛﻮﺋﺮي ﻣﺪ ﻧﻈﺮﻣﺎن را ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ در اﻳﻦ ﻛﻮﺋﺮي ﻫﺮ اﺳﻤﻲ ﻛﻪ داراي ﺣﺮوﻓﻲ ﻛﻪ اﻳﻦ
ﺻﻔﺤﻪ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﺪ ﺑﺎﺷﺪ ﻧﺸﺎن ﻣﻲ دﻫﺪ و ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ آن را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
95 | P a g e
ﻓﺎﻳﻞ 17.html
ﻓﺎﻳﻞ 17.php
ﺑﻪ ﻣﺜﺎل 17‐1p1.phpو 17‐1p2.phpﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل در ﺻﻔﺤﻪ 17‐1p1.phpاﺑﺘﺪا ﺑﻪ ﭘﺎﻳﮕﺎه
داده ﻣﺘﺼﻞ ﺷﺪه و ﻣﻘﺪار آن را در ﻳﻚ combo boxﻗﺮا داده اﺳﺖ ﻛﻪ ﻣﺎﻧﻨﺪ ﻣﺜﺎل ﻗﺒﻞ از idﺑﺮاي
دﺳﺘﺮﺳﻲ ﺑﻪ ﻣﻘﺎدﻳﺮ اﻳﻦ combo boxاﺳﺘﻔﺎده ﺷﺪه اﺳﺖ و ﺗﺎﺑﻊ javaﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ از ﺗﺎﺑﻊ
)( $.postﺑﺮاي دﺳﺘﺮﺳﻲ ﺑﻪ ﺻﻔﺤﻪ 17‐1p2.phpﻣﺘﺼﻞ ﺷﺪه و ﻣﻘﺎدﻳﺮ را از آن ﺻﻔﺤﻪ ﺑﻪ ﺻﻮرت ajaxﺑﻪ
ﺧﻮده اﻳﻦ ﺻﻔﺤﻪ ﻣﻴﻔﺮﺳﺘﺪ .
96 | P a g e
17p1.php ﻓﺎﻳﻞ
97 | P a g e
ﻓﺎﻳﻞ 17‐1p2.php
ﻣﺘﺪ get
ﻣﺘﺪ getداده ﻫﺎ را از ﻃﺮﻳﻖ ﻣﺘﺪ getاز ﺳﺮور درﺧﻮاﺳﺖ ﻣﻲ ﻛﻨﺪ .ﺷﻜﻞ ﻛﻠﻲ اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮر ﺑﻪ
ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ .
ﭘﺎراﻣﺘﺮ ﻫﺎي ورودي اﻳﻦ ﻣﺘﻐﻴﻴﺮ ﻣﺎﻧﻦ ﻣﺘﺪ postﻣﻲ ﺑﺎﺷﺪ و ﻣﻲ ﺗﻮان ﻣﺎﻧﻨﺪ ﻣﺘﺪ postاز آن اﺳﺘﻔﺎده ﻧﻤﻮد.
98 | P a g e
ﻓﺎﻳﻞ 17get.html
ﻓﺎﻳﻞ 17get.php
اﻳﻦ ﻣﺜﺎل در ﺻﻔﺤﻪ 17get.htmlاﺑﺘﺪا ورودي را از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ و ﺑﻪ از ﻃﺮﻳﻖ ﻣﺘﺪ getﺑﻪ
ﺻﻔﺤﻪ 17get.phpارﺳﺎل ﻣﻲ ﻛﻨﻴﻢ و در آن ﺻﻔﺤﻪ آن را درﻳﺎﻓﺖ و ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
99 | P a g e
ﻓﺼﻞ ﭼﻬﺎردﻫﻢ
در اﻳﻦ ﻓﺼﻞ ﺑﺎ آﻣﻮﺧﺘﻪ ﻫﺎي ﻓﺼﻞ ﻫﺎي ﻗﺒﻞ اﻗﺪام ﺑﻪ ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﻣﺜﺎل ﻧﻤﻮده اﻳﻢ وﻟﻲ اﻳﻦ ﺑﺪان ﻣﻌﻨﺎ
ﻧﻴﺴﺖ ﻛﻪ در اﻳﻦ ﻓﺼﻞ ﺑﻪ داﻧﺶ ﺷﻤﺎ ﭼﻴﺰي اﺿﺎﻓﻪ ﻧﺸﻮد و ﻣﻄﺎﻟﺐ ﺗﻜﺮار ﺑﺎﺷﺪ .
ﺑﻪ ﻣﺜﺎل زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .ﻣﺜﺎل زﻳﺮ ﻳﻚ ﻣﺜﺎل ﺳﺎده از ﺷﺊ ﮔﺮاﻳﻲ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻳﻚ ﻛﻼس ﺑﺴﻴﺎر ﺳﺎده از
ﻣﺘﺼﻞ ﺷﺪن از ﭘﺎﻳﮕﺎه داده ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ ﺑﺎ اﻳﺠﺎد ﺳﺊ از آن ﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﺘﺼﻞ ﺷﺪه و ﻣﻘﺎدﻳﺮ
را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
ﻓﺎﻳﻞ classdb.php
100 | P a g e
ﻓﺎﻳﻞ objectclassdb.php
ﺧﺮوﺟﻲ
ﺑﻪ ﻣﺜﺎل زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل ﻳﻚ ﻛﻼس ﺑﺮاي ﻓﺮﺳﺘﺎدن emailﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ .در اﻳﻦ ﻛﻼس
4ﻓﻴﻠﺪ ﺧﺼﻮﺻﻲ ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ ﺑﺮاي اﺳﺘﻔﺎده در ﺗﺎﺑﻊ )( mailو ﻣﺘﺪ ﻫﺎﻳﻲ ﺑﺮاي ﻣﻘﺪار دﻫﻲ ﺑﻪ اﻳﻦ
ﻓﻴﻠﺪ ﻫﺎ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ .ﻣﺘﺪ ﺳﺎزﻧﺪه اﻳﻦ ﻛﻼس ﻓﻴﻠﺪ senderرا ﻣﻘﺪار دﻫﻲ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻫﻤﺎن ﻧﺎم
ﻓﺮﺳﺘﻨﺪه ﻣﻲ ﺑﺎﺷﺪ و ﻓﻴﻠﺪ recipientsرا ﺑﻪ ﺻﻮرت آراﻳﻪ ﺗﻌﺮﻳﻒ ﻣﻲ ﻛﻨﺪ .ﻣﺘﺪ addrecipientﻣﻘﺎدﻳﺮ
ارﺳﺎل ﺷﺪه را در آراﻳﻪ recipientsﻗﺮا ﻣﻲ دﻫﺪ .ﻣﺘﺪ setsubjectﻣﻮﺿﻮع اﻳﻤﻴﻞ را ﻣﻘﺪار دﻫﻲ ﻣﻲ ﻛﻨﺪ
و ﻣﺘﺪ setbodyﻣﺘﻦ اﺻﻠﻲ و ﺑﺪﻧﻪ اﻳﻤﻴﻞ را ﻣﻘﺪار دﻫﻲ ﻣﻲ ﻛﻨﺪ .ﻣﺘﺪ sendemailﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ
foreachﺗﺎﺑﻊ )( mailﻫﺮ دﻓﻌﻪ ﻳﻚ اﻳﻤﻴﻞ ﺑﻪ ﻣﻘﺎدﻳﺮ آراﻳﻪ recipientsﻣﻲ ﻓﺮﺳﺘﺪ و ﻧﺘﻴﺠﻪ آن را در ﻣﺘﻐﻴﻴﺮ
resultذﺧﻴﺮه ﻣﻲ ﻛﻨﺪ و در آﺧﺮ ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ اﻳﻤﻴﻞ ﺑﻪ درﺳﺘﻲ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ و ﭘﻴﻐﺎﻣﻲ
ﺑﺮاي ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﻴﻢ .
101 | P a g e
ﻓﺎﻳﻞ classemail.php
ﻓﺎﻳﻞ objectclassemail.php
ﺑﻪ ﻣﺜﺎل زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ .در اﻳﻦ ﻣﺜﺎل اﺑﺘﺪا ﻳﻚ ﻛﻼس ﺑﺮاي ﻣﺸﺨﺼﺎت ﺷﺨﺼﻲ ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ و ﻳﻚ
ﻛﻼس ﻫﻢ ﺑﺮاي داﻧﺸﺠﻮ ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ ﻛﻪ از ﻛﻼس اوﻟﻲ ﻣﺸﺘﻖ ﺷﺪه اﺳﺖ و ﻳﻚ آﻳﺪي و وﺿﻌﻴﺖ
داﻧﺸﺠﻮ ﺑﻪ ﻛﻼس داﻧﺸﺠﻮ اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ و ﻳﻚ ﻣﺘﺪ ﺑﺮاي درﻳﺎﻓﺖ و ﭼﺎپ ﻣﺸﺨﺼﺎت داﻧﺸﺠﻮ ﻧﻮﺷﺘﻪ
102 | P a g e
ﺷﺪه اﺳﺖ ﻛﻪ آﻳﺪي و وﺿﻌﻴﺖ داﻧﺸﺠﻮ و ﻧﺎم و ...را ﻣﻴﮕﻴﺮد و ﻣﺘﺪ ﻛﻼس واﻟﺪ را اﺟﺮا ﻣﻲ ﻛﻨﺪ و ﻣﺸﺨﺼﻪ
اﺿﺎﻓﻪ ﺷﺪه را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
ﻓﺎﻳﻞ classperson.php
ﻓﺮض ﻛﻨﻴﺪ ﻳﻚ ﻓﺮم در ﺳﺎﻳﺖ ﺧﻮد ﺑﺮاي ارﺗﺒﺎط ﺑﺎ ﻣﺎ ﻗﺮار داده اﻳﺪ اﮔﺮ ﺷﻤﺎ در اﻳﻦ ﻓﺮم ﺗﺼﻮﻳﺮ اﻣﻨﻴﺘﻲ
ﻗﺮار ﻧﺪﻫﻴﺪ ﺣﺎل ﻳﻚ ﻧﻔﺮ ﺑﺎ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ اي ﻛﻮﭼﻚ و ﺳﺎده در ﺑﺎزه ي زﻣﺎﻧﻲ ﺧﻴﻠﻲ ﻛﻢ و ﺑﻪ دﻓﻌﺎت ﻓﺮم
ﺷﻤﺎ را ﺑﺎ ﻳﻚ ﻣﻘﺪار ﺟﺪﻳﺪ ﺑﻪ ﺳﺮور ارﺳﺎل ﻣﻲ ﻛﻨﺪ و ﺑﻌﺪ از ﻣﺪت ﻛﻢ ﭘﺎﻳﮕﺎه داده ﺷﻤﺎ ﭘﺮ ﻣﻴﺸﻪ و ﻫﻨﮓ
ﻣﻴﻜﻨﻪ و ﭘﻴﺎم ﻫﺎي درﻳﺎﻓﺘﻲ اﻳﻤﻴﻠﺘﻮن ﻫﻢ ﭘﺮ ﻣﻴﺸﻪ ﺑﺮاي ﺟﻠﻮ ﮔﻴﺮي از اﻳﻦ ﻛﺎر از ﺗﺼﺎوﻳﺮ اﻣﻨﻴﺘﻲ اﺳﺘﻔﺎده
ﻣﻲ ﻛﻨﻴﻢ .ﺑﻪ ﻣﺜﺎل 19ﺗﻮﺟﻪ ﻛﻨﻴﺪ در اﻳﻦ ﻣﺜﺎل ﻳﻚ ﻓﺎﻳﻞ index.phpﻛﻪ ﺻﻔﺤﻪ اﺻﻠﻲ اﺳﺖ وﺟﻮ دارد و
103 | P a g e
در اﻳﻦ ﺻﻔﺤﻪ اﺑﺘﺪا sessionاﺟﺮا ﺷﺪه اﺳﺖ .در داﺧﻞ $textﺣﺮوﻓﻲ را ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻴﺨﻮاﻫﻴﻢ در
رﻣﺰ ﻋﺒﻮر ﺑﺎﺷﻨﺪ .ﻣﺘﻐﻴﻴﺮ codرا اﺑﺘﺪا ﺧﺎﻟﻲ ﻗﺮار ﻣﻲ دﻫﻴﻢ ﺑﻌﺪ ﺣﻠﻘﻪ اﻳﻲ را ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ 6ﺑﺎر ﺗﻜﺮار
ﻣﻲ ﺷﻮد و در ﺧﻂ اول ﻳﻚ ﻋﺪد ﺗﺼﺎدﻓﻲ از 0ﺗﺎ ﺗﻌﺪاد ﺣﺮوف textﺑﻪ ﻣﺎ ﻣﻲ دﻫﺪ و در ﺧﻂ ﺑﻌﺪ ﺑﻮﺳﻴﻠﻪ
substrﻣﻘﺪار ﺷﺮوع را اﻧﺘﺨﺎب زﻳﺮ رﺷﺘﻪ رو ﻫﻤﻮن ﻋﺪد رﻧﺪوم ﻗﺮار دادﻳﻢ و ﻃﻮﻟﺶ ﻫﻢ ﻳﻚ ﮔﺬاﺷﺘﻴﻢ و
درون ﻣﺘﻐﻴﻴﺮ codرﻳﺨﺘﻴﻢ ﺑﺎ اﺟﺮا ﺣﻠﻘﻪ 6ﺣﺮف ﺗﺼﺎدﻓﻲ در codﻗﺮار ﻣﻲ ﮔﻴﺮد و ﺑﻌﺪ از ﺣﻠﻘﻪ ﻣﻘﺪار cod
را ﺑﺮاي اﻣﻨﻴﺖ ﺑﻴﺸﺘﺮ در sessionﻗﺮار ﻣﻲ دﻫﻴﻢ .وﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﮓ imgﻳﻚ ﻟﻴﻨﻚ ﺑﻪ ﺗﺼﻮﻳﺮ
ﻣﻮن ﻛﻪ در ﺻﻔﺤﻪ securitycod.phpﻫﺴﺖ ﻗﺮار ﻣﻲ دﻫﻴﻢ .و ﻳﻚ ورودي ﺑﺮاي ﺗﺎﻳﭗ رﻣﺰ ﺑﺮاي ﻛﺎرﺑﺮ ﻗﺮار
ﻣﻲ دﻫﻴﻢ و ﺑﺎ اﺳﺘﻔﺎده از ajaxاﻳﻦ ﻣﻘﺎدﻳﺮ ﺑﻪ ﺻﻔﺤﻪ securitycod.phpارﺳﺎل ﻣﻲ ﻛﻨﻴﻢ و ﻫﻤﺮاه آن ﻳﻚ
ﻣﺘﻐﻴﻴﺮ statusﺑﺮاي ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﻣﻴﻔﺮﺳﺘﻴﻢ و ﺑﻪ آن ﻳﻚ ﻣﻘﺪار ﻣﻲ دﻫﻴﻢ .اﻣﺎ در ﺻﻔﺤﻪ scuritycod.php
اﺑﺘﺪا ﺟﻠﺴﻪ را اﺟﺮا ﻣﻲ ﻛﻨﻴﻢ و ﭼﻮن ﻗﺮار اﺳﺖ ﺧﺮوﺟﻲ ﺗﺼﻮﻳﺮ ﺑﺎﺷﺪ ﻣﺎ ﻫﺪر ﺻﻔﺤﻪ رو jpgﻗﺮار دادﻳﻢ و
ﻣﻘﺪار codرااز ﺟﻠﺴﻪ درﻳﺎﻓﺖ و درون ﻣﺘﻐﻴﻴﺮ codﻣﻴﺮﻳﺰﻳﻢ .و ﻳﻜﺴﺮي ﻣﺘﻐﻴﻴﺮ ﺑﺮاي وﻳﮋﮔﻲ ﻫﺎي ﺗﺼﻮﻳﺮ
ﺗﻌﺮﻳﻒ ﻛﺮده اﻳﻢ ﻣﺜﻠﻪ اﻧﺪازه ﻓﻮﻧﺖ ,ﻃﻮل ﻋﻜﺲ ,ارﺗﻔﺎع ﻋﻜﺲ .ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر ﺷﺮﻃﻲ ﺑﺮرﺳﻲ ﻛﺮده اﻳﻢ
ﻛﻪ آﻳﺎ ﻣﺘﻐﻴﻴﺮ statusﺧﺎﻟﻲ اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ﺧﺎﻟﻲ ﻧﺒﺎﺷﺪ ﺑﻪ اﻳﻦ ﻣﻌﻨﺎ اﺳﺖ ﻛﻪ ﻛﺎرﺑﺮ ﭼﻴﺰي ﺗﺎﻳﭗ اﺳﺖ و
ﺗﺼﻮﻳﺮ ﻗﺒﻼ اﻳﺠﺎد ﺷﺪه اﺳﺖ اﮔﺮ ﺧﺎﻟﻲ ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﭼﻴﺰي ﺗﺎﻳﭗ ﻛﺮده و ﺗﺼﻮﻳﺮ ﻗﺒﻼ ﺳﺎﺧﺘﻪ ﻧﺸﺪه اﺳﺖ و ﺑﺎﻳﺪ
ﺗﺼﻮﻳﺮ را ﺑﺴﺎزﻳﻢ .اﺑﺘﺪا ﺑﺎ ﻣﺘﺪ imagecreateﺑﺎ دادن ﻃﻮل و ﻋﺮض ﻳﻚ ﺗﺼﻮﻳﺮ ﻣﻲ ﺳﺎزد و اون را درون
ﻣﺘﻐﻴﻴﺮ imageﻗﺮار ﻣﻲ دﻫﻴﻢ و ﺳﭙﺲ ﺑﺎ ﻣﺘﺪ imagecolorallocateﺗﺼﻮﻳﺮﻣﺎن را ﺑﺎ رﻧﮓ ﺧﺎﻛﺴﺘﺮي ﭘﺮ
ﻣﻴﻜﻨﻴﻢ .ﺳﭙﺲ رﻧﮓ ﻧﻮﺷﺘﻪ ﻫﻢ ﺑﺎ ﻫﻤﺎن ﻣﺘﺪ ﺑﻪ رﻧﮓ ﻣﺸﻜﻲ ﻣﻴﮕﻴﺮﻳﻢ و درون ﻣﺘﻐﻴﻴﺮ ﻗﺮار ﻣﻲ دﻫﻴﻢ .
ﻓﺎﻳﻞ index.php
105 | P a g e
ﻓﺎﻳﻞ securitycod.php
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ اﺳﻢ insertp1.phpﺑﺮاي ورود اﻃﻼﻋﺎت اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .در اﻳﻦ ﺻﻔﺤﻪ اﺑﺘﺪا ﻳﻚ ﻓﺮم
ﺑﺎ دو ورودي و ﻳﻚ دﻛﻤﻪ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺧﺎﺻﻴﺖ onclickدﻛﻤﻪ ﻳﻚ ﺗﺎﺑﻊ ﺟﺎوا را اﺟﺮا ﻣﻲ ﻛﻨﺪ .اﻳﻦ ﺗﺎﺑﻊ
ﺟﺎوا اﻃﻼﻋﺎت را ﺑﻪ ﺻﻮرت Ajaxﺑﺮاي ﺻﻔﺤﻪ insertp2.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻣﺘﻐﻴﻴﺮ ﻫﺎي nameو family
را ﺑﺎ ﻣﻘﺎدﻳﺮ داﺧﻞ ﻓﺮم ﭘﺮ ﻣﻲ ﻛﻨﺪ و اﻃﻼﻋﺎت ﺑﺮﮔﺸﺘﻲ را درون divﺑﺎ آﻳﺪي mesﭼﺎپ ﻣﻲ ﻛﻨﺪ .اﻣﺎ در
ﺻﻔﺤﻪ insertp2.phpاﺑﺘﺪا ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﻣﺘﻐﻴﻴﺮ nameو familyﻫﺮ دو داراي ﻣﻘﺪار ﻣﻲ ﺑﺎﺷﻨﺪ ﻳﺎ
ﺧﻴﺮ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ emptyاﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲ دﻫﻴﻢ ﻛﻪ اﮔﺮ اﻳﻦ دو ﻣﺘﻐﻴﻴﺮ ﻣﻘﺪارﺷﺎن ﺧﺎﻟﻲ ﺑﺎﺷﺪ
ﻣﻘﺪار trueر ﺑﺮ ﻣﻴﮕﺮداﻧﺪ و اﮔﺮ ﻣﻘﺪار دﻫﻲ ﺷﺪه ﺑﺎﺷﻨﺪ ﻣﻘﺪار falseرا ﺑﺮ ﻣﻴﮕﺮداﻧﺪ .اﮔﺮ ﻣﻘﺪاري ﻧﺪاﺷﺘﻪ
ﺑﺎﺷﻨﺪ ﭘﻴﻐﺎﻣﻲ ﻣﺒﻨﻲ ﺑﺮ اﻳﻨﻜﻪ اﻃﻼﻋﺎت را وارد ﻛﻨﻴﺪ ﭼﺎپ ﻣﻲ ﺷﻮد و اﮔﺮ ﻫﺮ دو ﻣﺘﻐﻴﻴﺮ ﭘﺮ ﺑﺎﺷﻨﺪ دو ﻣﺘﻐﻴﻴﺮ
را اﺑﺘﺪا ﻓﺎﺻﻠﻪ ﻫﺎي ﻛﻨﺎري آن ﻫﺎ را ﺣﺬف ﻛﺮده و ﻫﻤﻪ ﺣﺮوف آن ﻫﺎ را ﺑﻪ ﺣﺮوف ﻛﻮﭼﻚ ﺗﺒﺪﻳﻞ ﻣﻲ ﻛﻨﻴﻢ و
ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ mysqliﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﻮرد ﻧﻈﺮ ﻣﺘﺼﻞ ﻣﻲ ﺷﻮﻳﻢ و در ﺧﻂ ﺑﻌﺪ ﭼﻚ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ
آﻳﺎ اﻳﻦ ارﺗﺒﺎط ﺑﻪ درﺳﺘﻲ ﺑﺮﻗﺮار ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ اﻳﻦ ارﺗﺒﺎط ﺧﻄﺎ داده ﺑﺎﺷﺪ ﭘﻴﻐﺎم ﺧﻄﺎﻳﻲ ﺑﺮاي ﻛﺎرﺑﺮ
ﻧﺸﺎن ﻣﻲ دﻫﻴﻢ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻳﻚ ﻛﻮﺋﺮي ﺑﺮاي ﺑﺮرﺳﻲ اﻳﻨﻜﻪ ﻛﻪ ﻛﺎرﺑﺮ اﻃﻼﻋﺎت ﺗﻜﺮاري وارد ﻛﺮده
ﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ ﻣﻲ ﻧﻮﻳﺴﻴﻢ و ﺑﺎ دﺳﺘﻮر ﺷﺮﻃﻲ ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ در اﻳﻦ ﻛﻮﺋﺮي رﻛﻮردي ﭘﻴﺪا ﺷﺪه اﺳﺖ
106 | P a g e
ﻳﺎ ﺧﻴﺮ اﮔﺮ ﭘﻴﺪا ﺷﺪه ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﻛﺎرﺑﺮ ﻛﻠﻤﺎت ﺗﻜﺮاري وارد ﻛﺮده اﺳﺖ و ﭘﻴﻐﺎﻣﻲ ﻣﺒﻨﻲ ﺑﺮ ﺗﻜﺮاري ﺑﻮدن
ﺑﺮاي ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﻴﻢ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻛﻮﺋﺮي ﺑﺮاي درج اﻳﻦ ﻧﺎم و ﻓﺎﻣﻴﻠﻲ ﻣﻲ ﻧﻮﻳﺴﻴﻢ و در آﺧﺮ
ارﺗﺒﺎط ﺑﺎ ﭘﺎﻳﮕﺎه داده را ﻗﻄﻊ ﻣﻲ ﻛﻨﻴﻢ .و در ﺧﻂ ﺑﻌﺪ ﻣﻘﺪار tableرا ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ اﮔﺮ اﻳﻦ ﻣﻘﺪار 1
ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺛﺒﺖ ﺷﺪه اﺳﺖ و ﭘﻴﻐﺎﻣﻲ ﻣﺒﻨﻲ ﺑﺮ درج ﻣﻮﻓﻘﻴﺖ اﻃﻼﻋﺎت ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ و در ﻏﻴﺮ
اﻳﻦ ﺻﻮرت ﻳﻌﻨﻲ اﻃﻼﻋﺎت ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺛﺒﺖ ﻧﺸﺪه اﺳﺖ و ﭘﻴﻐﺎﻣﻲ ﻣﺒﻨﻲ ﺑﺮ درج ﻧﺎ ﻣﻮﻓﻘﻴﺖ اﻃﻼﻋﺎت ﻧﻤﺎﻳﺶ
ﻣﻲ دﻫﻴﻢ .
ﻓﺎﻳﻞ insertp1.php
107 | P a g e
ﻓﺎﻳﻞ insertp2.php
108 | P a g e
و ﻧﺘﻴﺠﻪ آن را در ﻧﺎﺣﻴﻪ ﻣﺘﻦ ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﺪ .در ﻓﺎﻳﻞ combop2.phpاﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﺷﻮد ﻛﻪ آﻳﺎ
ﻣﺘﻐﻴﺮ statusاز ﻃﺮﻳﻖ ﻣﺘﺪ postارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﻧﺸﺪه ﺑﺎﺷﺪ دوﺑﺎره ﺻﻔﺤﻪ ﻣﺮورﮔﺮ
را ﺑﻪ ﺻﻔﺤﻪ اﺑﺘﺪا ﻣﻴﻔﺮﺳﺘﻴﻢ وﻟﻲ اﮔﺮ ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ اﺑﺘﺪا آن را درون ﻣﺘﻐﻴﻴﺮي ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ و ﺑﺎ
اﺳﺘﻔﺎده از mysqliﺑﻪ ﭘﺎﻳﮕﺎه داده ﻣﺪ ﻧﻈﺮ ﻣﺘﺼﻞ ﻣﻲ ﺷﻮﻳﻢ و ﻛﻮﺋﺮي ﺑﺮاي درﻳﺎﻓﺖ داده ﻫﺎ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ
ﻧﺤﻮه ﻣﺮﺗﺐ ﺳﺎزي آن را از ﻛﻤﺒﻮﺑﺎﻛﺲ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ و ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻣﻘﺪار ﺳﻦ را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ
و در آﺧﺮ ارﺗﺒﺎط را ﻗﻄﻊ ﻣﻲ ﻛﻴﻨﻢ .
ﻓﺎﻳﻞ combop1.php
109 | P a g e
ﻓﺎﻳﻞ combop2.php
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﺎ ﻧﺎم cal.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ دو ﺗﺎ ورودي از ﻛﺎرﺑﺮ ﻣﻲ ﮔﻴﺮد و ﭼﻬﺎر ﺗﺎ دﻛﻤﻪ دارد ﻛﻪ
ﻛﻪ ﺑﺮاي ﭼﻬﺎر ﻋﻤﻞ اﺻﻠﻲ ﻣﻲ ﺑﺎﺷﻨﺪ ﻛﻪ ﺑﺎ زدن ﻫﺮ ﻛﺪام از دﻛﻤﻪ ﻫﺎ ﻣﻘﺪار آن ﻫﺎ ﻛﻪ ﺑﺎ ﻋﻤﻠﮕﺮ ﻫﺎي ﺧﻮدﺷﺎن
ﭘﺮ ﺷﺪه اﺳﺖ را ﺑﻪ ﺗﺎﺑﻊ ﺟﺎوا ﻣﻲ ﻓﺮﺳﺘﺪ اﻳﻦ ﺗﺎﺑﻊ ﺳﻪ ﭘﺎراﻣﺘﺮ را ﺑﻪ ﺻﻮرت Ajaxﺑﻪ ﺻﻔﺤﻪ cal2.php
ارﺳﺎل ﻣﻲ ﻛﻨﺪ و ﻧﺘﻴﺠﻪ آن را در ﺑﺮﭼﺴﺐ ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﺪ .اﻳﻦ ﺳﻪ ﭘﺎراﻣﺘﺮي ﻛﻪ ﺑﻪ اﻳﻦ ﺗﺎﻳﻊ ارﺳﺎل ﻣﻲ
ﻛﻨﺪ دو ورودي ﻛﺎرﺑﺮ ﻣﻲ ﺑﺎﺷﺪ و ﻳﻜﻲ ﻧﻮع ﻋﻤﻠﻴﺎﺗﻲ اﺳﺖ ﻛﻪ ﻛﺎرﺑﺮ روي دﻛﻤﻪ ﻣﻮرده ﻧﻈﺮ ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ
.اﻣﺎ در ﺻﻔﺤﻪ cal2.phpاﺑﺘﺪا ﭼﻚ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ داده ﻫﺎ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﻪ
ارﺳﺎل ﺷﺪه اﺳﺖ آن ﻫﺎ را در ﻣﺘﻐﻴﻴﺮ ي ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ .ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ﺷﺮﻃﻲ switchﻧﻮع ﻋﻤﻠﻴﺎت
را ﻣﻴﮕﻴﺮﻳﻢ و ﺑﺮ اﺳﺎس آن ﻧﻮع ﻋﻤﻠﻴﺎت را اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﻴﻢ و در ﻧﻬﺎﻳﺖ ﺧﺮوﺟﻲ را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
110 | P a g e
cal.php ﻓﺎﻳﻞ
111 | P a g e
ﻓﺎﻳﻞ cal2.php
ﺟﺪول ﺿﺮب
ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار ﻣﺘﺪاﺧﻞ ﻣﻴﺨﻮاﻫﻴﻢ ﻳﻚ ﺟﺪول ﺿﺮب 10*10اﻳﺠﺎد ﻛﻨﻴﻢ .اﺑﺘﺪا ﻳﻚ ﺣﻠﻘﻪ ﻣﻲ
ﻧﻮﻳﺴﻴﻢ ﻛﻪ از 1ﺗﺎ 10ﺷﻤﺎرﻧﺪه دارد و درون آن ﻫﻢ ﻳﻚ ﺣﻠﻘﻪ دﻳﮕﺮ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ 1ﺗﺎ 10ﺷﻤﺎرﻧﺪه دارد
و ﺳﭙﺲ ﺣﺎﺻﻞ ﺿﺮب ﺷﻤﺎرﻧﺪه ﻫﺎي اﻳﻦ دو ﺣﻠﻘﻪ را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .ﺣﻠﻘﻪ ﻫﺎي ﻣﺘﺪاﺧﻞ ﺑﻪ اﻳﻦ ﺻﻮرت
ﻋﻤﻞ ﻣﻲ ﻛﻨﻨﺪ ﻛﻪ ﺑﺎ ﻳﻚ ﺣﺮﻛﺖ ﺣﻠﻘﻪ ﺑﺎﻻﻳﻲ ﺣﻠﻘﻪ دروﻧﻲ از اﺑﺘﺪا ﺗﺎ اﻧﺘﻬﺎ اﻧﺠﺎم ﻣﻲ ﺷﻮد .ﺑﻪ ﻣﺜﺎل zarb.php
دﻗﺖ ﻛﻨﻴﺪ.
112 | P a g e
ﺧﺮوﺟﻲ
ﺣﺎل اﻳﻦ ﻣﺜﺎل را ﺑﻪ ﺻﻮرت Ajaxﻣﻲ ﻧﻮﻳﺴﻴﻢ و ﻣﻘﺪار ﺟﺪول ﺿﺮب را از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ .در اﻳﻨﺠﺎ
اﺑﺘﺪا ﻓﺎﻳﻞ zarbajax.phpرا اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ در اﻳﻦ ﻓﺎﻳﻞ دو ورودي از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ و اﻳﻦ
دو ورودي را ﺑﻪ ﺻﻮرت Ajaxﺑﻪ ﺻﻔﺤﻪ zarbajax2.phpارﺳﺎل ﻣﻲ ﻛﻨﻴﻢ .در اﻳﻦ ﻓﺎﻳﻞ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ
ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ورودي ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ .داده ﻫﺎ را درون ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ و
ﻣﻘﺪار ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار را ﺗﺎ ﻣﻘﺪار ورودي درﻳﺎﻓﺘﻲ ﻛﺎرﺑﺮ ﻣﻲ ﻧﻮﻳﺴﻴﻢ .
113 | P a g e
ﻓﺎﻳﻞ zarbajax.php
ﻓﺎﻳﻞ zarbajax2.php
اﺑﺘﺪا ﻳﻚ ﺻﻔﺤﻪ ﺑﺮاي درﻳﺎﻓﺖ ﻛﻠﻤﻪ از ﻛﺎرﺑﺮ ﺑﻪ ﻧﺎم reversp1.phpاﻳﺠﺎد ﻣﻴﻜﻨﻴﻢ و ﻳﻚ ﻓﺮم ﻃﺮاﺣﻲ ﻣﻴﻜﻨﻴﻢ
ﻛﻪ ﻳﻚ ورودي و ﻳﻚ دﻛﻤﻪ دارد و داده ﻛﺎرﺑﺮ را ﺑﻪ ﺻﻔﺤﻪ reversp2.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ .اﻣﺎ در ﺻﻔﺤﻪ
reversp2.phpاﺑﺘﺪا داده را درﻳﺎﻓﺖ ﻣﻴﻜﻨﻴﻢ و ﻳﻚ ﻣﺘﻐﻴﻴﺮ ﺑﻪ ﻧﺎم rاز ﻧﻮع آراﻳﻪ ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﻴﻢ .و ﻳﻚ
114 | P a g e
ﺗﺎﺑﻊ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻛﻠﻤﻪ را ﻣﻌﻜﻮس ﻛﻨﺪ .اﻳﻦ ﺗﺎﺑﻊ اﺑﺘﺪا ﻳﻚ ورودي ﻣﻲ ﮔﻴﺮد و ﺗﻌﺪاد ﺣﺮوف ورودي را
درون ﻳﻚ ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ .ﻳﻚ ﺣﻠﻘﻪ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ از ﺗﻌﺪاد ﺣﺮوف ﺗﺎ 0ﺷﻤﺎرﻧﺪه دارد و ﻫﺮ
دﻓﻌﻪ ﻳﻜﻲ از آن ﻛﻢ ﻣﻲ ﺷﻮد .درون اﻳﻦ ﺣﻠﻘﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( array_pushﻣﻘﺪاري را ﺑﻪ آﺧﺮ آراﻳﻪ
rذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ ﻣﺎ ورودي اول اﻳﻦ ﺗﺎﺑﻊ را ﻧﺎم آراﻳﻪ ﻣﻲ ﮔﺬارﻳﻢ و ورودي دوم را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ
substrرﺷﺘﻪ را ﻣﻴﮕﻴﺮﻳﻢ و از ﺣﺮف ﺷﻤﺎره iﺷﺮوع ﻣﻴﻜﻨﻴﻢ و ﻳﻜﻲ از آن را ﺑﺮ ﻣﻲ دارﻳﻢ ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ﺑﺎ
اﺟﺮ اﺷﺪن ﺣﻠﻘﻪ از آﺧﺮ رﺷﺘﻪ درﻳﺎﻓﺘﻲ ﺷﺮوع ﻣﻲ ﻛﻨﺪ و ﺣﺮوف آن را دوﻧﻪ دوﻧﻪ درون آراﻳﻪ ﭼﺎپ ﻣﻲ ﻛﻨﺪ
.در آﺧﺮ ﻫﻢ آرﻳﻪ را ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ foreachﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ reversp1.php
ﻓﺎﻳﻞ reversp2.php
ﺣﺎل اﻳﻦ ﺑﺮﻧﺎﻣﻪ را ﺑﺎ اﺳﺘﻔﺎده از Ajaxﻣﻲ ﻧﻮﻳﺴﻴﻢ .اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ اﺳﻢ reversajaxp1.phpاﻳﺠﺎد
ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﻣﺤﺘﻮﻳﺎت آن ﻣﺎﻧﻨﺪ ﻓﺎﻳﻞ reversp1.phpﻣﻲ ﺑﺎﺷﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ از ﺗﺎﺑﻊ postﺑﺮاي Ajax
اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ و ورودي ﻛﺎرﺑﺮ را ﺑﻪ ﺻﻔﺤﻪ reversajaxp2.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ .ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ
reverajaxp2.phpدﻗﻴﻘﺎ ﻣﺎﻧﻨﺪ ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ reversp2.phpﻣﻲ ﺑﺎﺷﺪ .
115 | P a g e
ﻓﺎﻳﻞ reversajaxp1.php
ﻓﺎﻳﻞ reversajaxp2.php
ﺑﺮﻧﺎﻣﻪ ave.phpﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ و ﺣﻠﻘﻪ ﺗﻜﺮار ﻣﻴﺎﻧﮕﻴﻦ اﻋﺪاد ﻓﺮد ﺑﻴﻦ 1ﺗﺎ 500را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
116 | P a g e
ﻓﺎﻳﻞ ave.php
ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻫﺎي ﺗﻜﺮار ﻣﻲ ﺧﻮاﻫﻴﻢ دو ﺷﻜﻞ زﻳﺮ را ﻃﺮاﺣﻲ ﻛﻨﻴﻢ .ﺑﻪ ﺗﺼﻮﻳﺮ اﻳﻦ دو ﺷﻜﻞ ﻧﮕﺎه
ﻛﻨﻴﺪ.
117 | P a g e
118 | P a g e
ﺑﻪ ﺑﺮﻧﺎﻣﻪ setare.phpﺗﻮﺟﻪ ﻛﻨﻴﺪ .
اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎ اﺳﺘﻔﺎده از دو ﺣﻘﻠﻪ ﻣﺘﺪاﺧﻞ اﻳﻦ اﺷﻜﺎل را ﻃﺮاﺣﻲ ﻣﻲ ﻛﻨﺪ .
رﻣﺰﻧﮕﺎري اﻃﻼﻋﺎت
ﺑﺮاي ذﺧﻴﺮه رﻣﺰ ﻛﺎرﺑﺮان در ﭘﺎﻳﮕﺎه داده ﺑﻬﺘﺮ اﺳﺖ داده ﻫﺎ ﺑﻪ ﺻﻮرت رﻣﺰﻧﮕﺎري در ﭘﺎﻳﮕﺎه داده ذﺧﻴﺮه
ﺷﻮد اﮔﺮ رﻣﺰ ﻋﺒﻮر ﻛﺎرﺑﺮان ﺑﻪ ﺻﻮرت رﻣﺰﻧﮕﺎري ﺷﺪه در دﻳﺘﺎﺑﻴﺲ ذﺧﻴﺮه ﻧﺸﻮد وﻗﺘﻲ ﻫﻜﺮي ﺑﻪ دﻳﺘﺎﺑﻴﺲ
ﺳﺎﻳﺖ ﺷﻤﺎ دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﻨﺪ ﺗﻤﺎﻣﻲ رﻣﺰ ﻋﺒﻮر ﻫﺎ را در اﺧﺘﻴﺎر دارد ﭘﺲ ﺑﻬﺘﺮ اﺳﺖ داده ﻫﺎ را ﺑﻪ ﺻﻮرت
رﻣﺰﻧﮕﺎري ﺷﺪه در ﺑﻴﺎﻳﺪ .ﺑﺮاي اﻳﻨﻜﺎر PHPﺗﻮاﺑﻌﻲ ﻣﺨﺘﻠﻔﻲ دارد MD5 .ﻳﻜﻲ از ﻣﺤﺒﻮب ﺗﺮﻳﻦ اﻟﮕﻮرﻳﺘﻢ
ﻫﺎي رﻣﺰﻧﮕﺎري ﻣﻮرد اﺳﺘﻔﺎده ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن اﺳﺖ .ﺗﺎﺑﻊ md5روش ﻛﺎﻣﻼ ﻣﻄﻤﺌﻨﻲ ﺑﺮاي رﻣﺰﻧﮕﺎري
ﻧﻴﺴﺖ .اﻛﺜﺮ ﻛﺎرﺑﺮان ﺗﻤﺎﻳﻞ دارﻧﺪ از رﻣﺰ ﻫﺎي ﻋﺒﻮر 5ﻳﺎ 6ﻛﺎراﻛﺘﺮي اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ,رﻣﺰ ﻫﺎي ﻋﺒﻮر ﺑﻪ
اﻳﻦ ﺷﻜﻞ ﻛﻪ از ﭘﻴﭽﻴﺪﮔﻲ ﻣﻨﺎﺳﺒﻲ ﺑﺮ ﺧﻮردار ﻧﻴﺴﺘﻨﺪ و ﺗﻮﺳﻂ ﻳﻚ ﺣﻤﻠﻪ ﺳﺎده آﺳﻴﺐ ﭘﺬﻳﺮ ﺧﻮاﻫﻨﺪ ﺑﻮد .
ﺷﻜﻞ ﺻﺤﻴﺢ اﺳﺘﻔﺎده از md5ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ .
ﺑﺮاي اﻳﻨﻜﻪ اﻳﻦ ﻣﺸﻜﻞ ﺣﻞ ﺷﻮد ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن از دو روش اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﻨﺪ ,روش اول اﺿﺎﻓﻪ ﻛﺮدن
ﻳﻚ ﻋﺒﺎرت ﻧﺎ ﻣﻔﻬﻮم ﺑﻪ ﭘﺴﻮرد ﻫﺎ ﻗﺒﻞ از رﻣﺰﻧﮕﺎري آن ﻫﺎ اﺳﺖ .ﺑﻪ ﺗﺼﻮﻳﺮ زﻳﺮ ﻧﮕﺎه ﻛﻨﻴﺪ .
119 | P a g e
روش دوم اﺳﺘﻔﺎده از اﻟﮕﻮرﻳﺘﻢ ﻫﺎي رﻣﺰﻧﮕﺎري ﻃﻮﻻﻧﻲ ﺗﺮ )وﻟﻲ ﻛﻨﺪﺗﺮ( ﻣﺎﻧﻨﺪ sha2 , sha1و ...اﺳﺖ .
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم fileajax.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .ﻛﻪ ﻳﻚ ورودي از ﻛﺎرﺑﺮ ﻣﻴﮕﻴﺮد و اﻳﻦ ورودي را ﺑﻪ
ﺗﺎﺑﻌﻲ ﻣﻲ دﻫﺪ ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ اﻳﻦ ورودي را ﺑﻪ ﺻﻮرت Ajaxﺑﻪ ﺻﻔﺤﻪ fileajax2.phpارﺳﺎل ﻣﻲ ﻛﻨﺪ .اﻣﺎ در
ﻓﺎﻳﻞ fileajax2.phpاﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻴﻜﻴﻨﻢ ﻛﻪ آﻳﺎ ورودي ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل
ﺷﺪه ﺑﺎﺷﺪ ﻳﻚ ﻓﺎﻳﻞ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﺑﻪ اﺳﻢ user.txtو ﻣﻘﺪار ورودي را در اﻳﻦ ﻓﺎﻳﻞ ﻣﻲ ﻧﻮﻳﺴﻴﻢ و ﻣﻘﺪار
ﺑﺎزﮔﺸﺘﻲ را ﻛﻪ ﺗﻌﺪاد ﺣﺮوف ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ fileajax.php
120 | P a g e
ﻓﺎﻳﻞ fileajax2.php
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم day1.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ روز ﻫﻔﺘﻪ را از ﻛﺎرﺑﺮ ﻣﻲ ﮔﻴﺮد و ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ
Ajaxآن را ﺑﻪ ﺻﻔﺤﻪ day2.phpﻣﻲ دﻫﺪ و آن ﺻﻔﺤﻪ ورودي را ﺑﻪ دﺳﺘﻮر switchﻣﻲ دﻫﺪ و ﺑﺮ اﺳﺎس
ﺷﻤﺎره وارد ﺷﺪه ﺗﻮﺳﻂ ﻛﺎرﺑﺮ ﻧﺎم ﻫﻔﺘﻪ را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .
ﻓﺎﻳﻞ day1.php
121 | P a g e
ﻓﺎﻳﻞ day2.php
ﻣﺤﺎﺳﺒﻪ ي ﺳﻦ
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم agetest1.phpاﻳﺠﺎد ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺳﻦ ﻛﺎرﺑﺮ را از ورودي ﺑﮕﻴﺮد و آن را درون ﻣﺘﻐﻴﻴﺮ
ageﻗﺮار دﻫﻴﺪ و ﺑﺎ ﺗﺎﺑﻊ postآن را ب ﺻﻮرت اﻳﺠﻜﺲ ﺑﻪ ﺻﻔﺤﻪ agetest2.phpﺑﻔﺮﺳﺘﺪ .اﻣﺎ در آن
ﺻﻔﺤﻪ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ ﻛﻪ آﻳﺎ ﭘﺎراﻣﺘﺮ ageﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﺷﺪه
ﺑﺎﺷﺪ اﺑﺘﺪا ﻣﺘﻐﻴﻴﺮ dayﺑﺮاي ﺗﻌﺪاد روز و ﻣﺘﻐﻴﻴﺮ weekﺑﺮاي ﺗﻌﺪاد ﻫﻔﺘﻪ و ﻣﺘﻐﻴﻴﺮ monthﺑﺮاي ﺗﻌﺪاد
ﻣﺎه و ﻣﺘﻐﻴﻴﺮ hﺑﺮاي ﺗﻌﺪاد ﺳﺎﻋﺖ و ﻣﺘﻐﻴﻴﺮ mﺑﺮاي ﺗﻌﺪاد دﻗﻴﻘﻪ و ﻣﺘﻐﻴﻴﺮ sﺑﺮاي ﺗﻌﺪاد ﺛﺎﻧﻴﻪ را در ﻧﻈﺮ
ﻣﻴﮕﻴﺮﻳﻢ .ﺳﭙﺲ ﺗﺎﺑﻌﻲ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺎدﻳﺮ ﺑﺎﻻ را ﻣﺤﺎﺳﺒﻪ ﻛﻨﺪ .
122 | P a g e
و در آﺧﺮ ﭘﺎراﻣﺘﺮ ورودي اﻳﻦ ﺻﻔﺤﻪ را ﺑﻪ ﺗﺎﺑﻊ ﻣﻲ دﻫﻴﻢ .ﻣﻘﺎدﻳﺮ را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ agetest1.php
ﻓﺎﻳﻞ agetest2.php
123 | P a g e
ﺟﺴﺘﺠﻮ ﺧﻄﻲ
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم searcharray.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ در اﻳﻦ ﻓﺎﻳﻞ ﻳﻚ آراﻳﻪ ﻣﻮﺟﻮد ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ
داراي ﻣﻘﺎدﻳﺮي ﻣﻲ ﺑﺎﺷﺪ اﻳﻦ ﻣﻘﺎدﻳﺮ ﻣﻲ ﺗﻮاﻧﻨﺪ از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﺷﺪه ﺑﺎﺷﻨﺪ ﻳﺎ از ﭘﺎﻳﮕﺎه داده درﻳﺎﻓﺖ
ﺷﺪه ﺑﺎﺷﺪ .ﺑﺎ اﺳﺘﻔﺎده از ﺗﻜﻨﻴﻚ ﺟﺴﺘﺠﻮ ﺧﻄﻲ ﻣﻲ ﺧﻮاﻫﻢ اﺳﻤﻲ را درون اﻳﻦ آراﻳﻪ ﺟﺴﺘﺠﻮ ﻛﻨﻴﻢ .اﺑﺘﺪا
ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻳﻚ ورودي ﻣﻴﮕﻴﺮد و داﺧﻞ اﻳﻦ ﺗﺎﺑﻊ ﻣﺘﻐﻴﻴﺮ sرا ﺑﺮاي ﺑﺮرﺳﻲ ﻗﺮار ﻣﻲ دﻫﻴﻢ و
ﻣﺘﻐﻴﻴﺮي از ﺟﻨﺲ آراﻳﻪ ﺗﻌﺮﻳﻒ ﻣﻲ ﻛﻨﻴﻢ .ﻳﻚ ﺣﻠﻘﻪ ﻗﺮار ﻣﻲ دﻫﻴﻢ ﺗﺎ از اول آراﻳﻪ ﺗﺎ آﺧﺮ آراﻳﻪ را ﺟﺴﺘﺠﻮ
ﻛﻨﺪ ﺑﺮاي اﻳﻦ ﻛﺎر ﺗﻌﺪاد ﻋﻨﺎﺻﺮ آراﻳﻪ را ﺑﺎ ﺗﺎﺑﻊ countدرﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ .ﺣﻠﻘﻪ از 0ﺗﺎ ﺗﻌﺪا آراﻳﻪ ﺷﻤﺎرﻧﺪه
دارد درون اﻳﻦ ﺣﻘﻠﻪ دﺳﺘﻮر ﺷﺮﻃﻲ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﺗﺎ آراﻳﻪ ﺑﺎ اﻧﺪﻳﺲ ﺷﻤﺎرﻧﺪه را ﺑﺎ ﻣﻘﺪار ورودي ﺗﺎﺑﻊ
ﻣﻘﺎﻳﺴﻪ ﻛﻨﺪ اﮔﺮ ﺑﺮاﺑﺮ ﺑﻮد ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ اﻳﻦ ﻛﻠﻤﻪ درون آراﻳﻪ وﺟﻮد دارد و ﺑﺎﻳﺪ از ﺣﻠﻘﻪ ﺧﺎرج
ﺷﺪ و ﻣﻘﺪار sرا ﺑﺮاﺑﺮ 1ﻣﻴﮕﺬارﻳﻢ ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ اﻳﻦ ﻣﻘﺪار ﭘﻴﺪا ﺷﺪه اﺳﺖ و در آﺧﺮ دﺳﺘﻮر ﺷﺮﻃﻲ ﻣﻲ
ﻧﻮﻳﺴﻴﻢ ﻛﻪ آﻳﺎ ﻣﻘﺪار sﻣﺨﺎﻟﻒ 1اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ﻣﺨﺎﻟﻒ ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﭘﻴﺪا ﻧﺸﺪه و ﭘﻴﻐﺎﻣﻲ ﻣﺒﻨﻲ ﺑﺮ ﭘﻴﺪا
ﻧﺸﺪن ﺑﺮاي ﻛﺎرﺑﺮ ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ searcharray.php
124 | P a g e
ﺧﺮوﺟﻲ
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم sortarray.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .در اﻳﻦ ﻓﺎﻳﻞ اﺑﺘﺪا ﻳﻚ آراﻳﻪ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ و
ﻣﻘﺎدﻳﺮ آن را ﺑﻪ ﺻﻮرت دﺳﺘﻲ وارد ﻣﻲ ﻛﻨﻴﻢ .ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺪار آراﻳﻪ را از ﺑﻴﺮون ﻣﻴﮕﻴﺮد و
ﺗﻌﺪاد ﻣﻘﺎدﻳﺮ آن را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ countدرون ﻣﺘﻐﻴﻴﺮ tذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ .دو ﺣﻠﻘﻪ ﺑﺮاي ﻣﺮﺗﺐ ﻛﺮدن
آراﻳﻪ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ از 0ﺷﺮوع ﻣﻲ ﺷﻮﻧﺪ و ﺗﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ آراﻳﻪ ﻣﻨﻬﺎي 1اداﻣﻪ ﭘﻴﺪا ﻣﻲ ﻛﻨﺪ و ﻣﻘﺎدﻳﺮ
آراﻳﻪ را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ﺷﺮﻃﻲ ﻣﺮﺗﺐ ﻣﻲ ﻛﻨﺪ در اﻳﻦ دﺳﺘﻮر اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﺷﻮد ﻛﻪ آﻳﺎ ﺧﺎﻧﻪ ﺑﻌﺪي
آراﻳﻪ ﺑﺰرﮔﺘﺮ از ﺧﺎﻧﻪ ﻛﻨﻮﻧﻲ آراﻳﻪ اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ ﻣﻘﺪار ﻛﻨﻮﻧﻲ را در ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ
ﺗﺎ از ﺑﻴﻦ ﻧﺮود و ﺳﭙﺲ ﻣﻘﺪار ﺧﺎﻧﻪ ﺑﻌﺪي را در ﺧﺎﻧﻪ ﻛﻨﻮﻧﻲ ﻣﻲ رﻳﺰﻳﻢ و در آﺧﺮ ﻣﻘﺪار ذﺧﻴﺮ ه ﺷﺪه ﻛﻪ
ﺣﺎوي ﻣﻘﺪار ﻛﻨﻮﻧﻲ اﺳﺖ را در ﺧﺎﻧﻪ ﺑﻌﺪي ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ اﻳﻨﮕﻮﻧﻪ ﻣﻘﺪار آراﻳﻪ ﻣﺮﺗﺐ ﻣﻲ ﺷﻮد .در آﺧﺮ
ﻫﻢ ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻣﻘﺎدﻳﺮ آراﻳﻪ ﻣﺮﺗﺐ ﺷﺪه را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
125 | P a g e
ﻓﺎﻳﻞ sertarray.php
ﺟﺴﺘﺠﻮ ﺑﺎﻳﻨﺮي
ﺟﺴﺘﺠﻮ ﺑﺎﻳﻨﺮي از ﺳﺮﻋﺖ ﺑﺴﻴﺎ ﺑﺎﻻي ﻧﺴﺒﺖ ﺑﻪ ﺟﺴﺘﺠﻮ ﺧﻄﻲ ﻣﻲ ﺑﺎﺷﺪ و ﺑﺮاي ﻣﻘﺎدﻳﺮ زﻳﺎد ﺑﺴﻴﺎر ﺑﻬﻴﻨﻪ ﻣﻲ
ﺑﺎﺷﺪ .در اﻟﮕﻮرﻳﺘﻢ ﺑﺎﻳﻨﺮي اﺑﺘﺪا ﻣﻘﺎدﻳﺮ ﺑﺎﻳﺪ ﻣﺮﺗﺐ ﺷﺪه ﺑﺎﺷﻨﺪ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ
ﻛﻪ ﻓﺮض ﻛﻨﻴﺪ ﺗﻌﺪاد ﻛﻞ داده ﻫﺎي ﻣﺎ ﺑﺮاﺑﺮ 200ﻋﺪد ﻣﻲ ﺑﺎﺷﺪ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ اﺑﺘﺪا ﻣﺤﻞ ﺷﺮوع ﺟﺴﺘﺠﻮ و
ﭘﺎﻳﺎن آن راﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ و ﻣﻴﺎﻧﻪ را اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﺪ ﻳﻌﻨﻲ ﺳﺮاغ ﻋﻨﺼﺮ 100ﻣﻲ رود اﮔﺮ اﻳﻦ ﻋﻨﺼﺮ ﻋﻨﺼﺮ
ﻣﻮرده ﻧﻈﺮ ﻣﺎ ﺑﺎﺷﺪ ﺑﺎ ﻳﻚ ﺣﺮﻛﺖ اﻳﻦ ﻋﻨﺼﺮ را ﭘﻴﺪا ﻛﺮده اﺳﺖ .اﮔﺮ ﻋﻨﺼﺮ ﻣﺎ ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ اﻟﮕﻮرﻳﺘﻢ ﺷﺮوع
ﺟﺴﺘﺠﻮ را از ﻋﻨﺼﺮ 101ﺷﺮوع ﻣﻴﻜﻨﺪ ﭼﻮن ﻋﻨﺼﺮي ﻛﻪ دﻧﺒﺎل آن از ﻣﻴﺎﻧﻪ ﺑﺰرﮔﺘﺮ اﺳﺖ ﺣﺎل ﻣﻴﺎﻧﻪ اﻟﮕﻮرﻳﺘﻢ
ﺗﻐﻴﻴﺮ ﻣﻲ ﻛﻨﺪ و ﻋﻨﺼﺮ 150ﻣﻴﺎﻧﻪ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻣﻲ ﺷﻮد و اﮔﺮ اﻳﻦ ﻋﻨﺼﺮ ﻫﻤﺎن ﻋﻨﺼﺮ ﺑﺎﺷﺪ ﺑﺎ دو ﺣﺮﻛﺖ
ﺟﺴﺘﺠﻮ ﺑﻪ ﭘﺎﻳﺎن ﻣﻲ رﺳﺪ و اﮔﺮ دوﺑﺎره ﻋﺒﺎرت ﻣﻮرده ﻧﻈﺮ ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ دوﺑﺎره ﺷﺮوع اﻟﮕﻮرﻳﺘﻢ از 151ﻣﻲ
ﺑﺎﺷﺪ و ﻣﻴﺎﻧﻪ اﻟﮕﻮرﻳﺘﻢ ﺑﻪ 175ﺗﻐﻴﻴﺮ ﻣﻲ ﻳﺎﺑﺪ .در واﻗﻊ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﺑﻪ ﮔﻮﻧﻪ اﻳﻲ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻋﻨﺼﺮ
وﺳﻂ ﻟﻴﺴﺖ اﻧﺘﺨﺎب ﺷﺪه و ﺑﺎ آرﮔﻮﻣﺎن ﺟﺴﺘﺠﻮ ﻣﻘﺎﻳﺴﻪ ﻣﻲ ﺷﻮد ﺗﺎ ﺗﻌﻴﻴﻦ ﺷﻮد از آن ﺑﺰرﮔﺘﺮ ,ﻛﻮﭼﻴﻜﺘﺮ ﻳﺎ
126 | P a g e
ﻣﺴﺎوي اﺳﺖ .اﮔﺮ آرﮔﻮﻣﺎن از ﻋﻨﺼﺮ اﻧﺘﺨﺎب ﺷﺪه ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ ﺟﺴﺘﺠﻮ در ﻧﻴﻤﻪ ﺑﺎﻻﻳﻲ و اﮔﺮ ﻛﻮﭼﻜﺘﺮ ﺑﺎﺷﺪ
در ﻧﻴﻤﻪ ﭘﺎﻳﻴﻨﻲ ﻟﻴﺴﺖ اداﻣﻪ ﭘﻴﺪا ﻣﻲ ﻛﻨﺪ .
ﻓﺎﻳﻞ binerysearch.php
127 | P a g e
اﻋﺪاد زوج
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم zoj.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ و ﺑﺎ اﺳﺘﻔﺎده ازﺣﻠﻘﻪ اﻋﺪاد زوج ﺑﻴﻦ 0ﺗﺎ 100را ﭼﺎپ ﻣﻴﻜﻨﺪ.
ﺷﻤﺎرﻧﺪه اﻳﻦ ﺣﻠﻘﻪ 2ﺗﺎﻳﻲ ﻣﻲ ﺑﺎﺷﺪ .
ﻓﺎﻳﻞ zoj.php
ﺣﺎل ﺑﺮﻧﺎﻣﻪ اﻳﻲ ﻣﻴﻨﻮﻳﺴﻴﻢ ﻛﻪ اﻋﺪاد ﻛﻪ ﺑﺮ 5ﺑﺨﺶ ﭘﺬﻳﺮ ﻣﻲ ﺑﺎﺷﻨﺪ را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .ﺑﺎ اﺳﺘﻔﺎده از ﺷﺮط
ﻫﺮ ﻋﺪدي ﻛﻪ ﺗﻘﺴﻢ ﺑﺮ 5ﻣﻲ ﺷﻮد و ﺑﺎﻗﻴﻤﺎﻧﺪه آن 0ﺷﻮد ﻳﻌﻨﻲ ﺑﺮ 5ﺑﺨﺶ ﭘﺬﻳﺮ اﺳﺖ ﺑﻨﺎﺑﺮ اﻳﻦ آن را ﭼﺎپ
ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ baghimande5.php
ﺗﺎﺑﻊ ﻣﻴﺎﻧﮕﻴﻦ
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم average.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .درون اﻳﻦ ﻓﺎﻳﻞ ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻳﻚ آراﻳﻪ
از اﻋﺪاد ﻣﻴﮕﻴﺮد و ﻣﻴﺎﻧﮕﻴﻦ آن را ﭼﺎپ ﻣﻲ ﻛﻨﺪ .اﺑﺘﺪا ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ countﺗﻌﺪا ﻋﻨﺎﺻﺮ آراﻳﻪ را
ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﻴﻢ و ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ﻣﻘﺎدﻳﺮ آراﻳﻪ را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲ ﻛﻨﻴﻢ و در ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ
در آﺧﺮ ﻣﻘﺪار ﻛﻞ را ﺗﻘﺴﻴﻢ ﺑﺮ ﺗﻌﺪاد ﻣﻲ ﻧﻤﺎﻳﻴﻢ و ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
128 | P a g e
ﻓﺎﻳﻞ average.php
اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﺎ ﻧﺎم srtlen1.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ .درون اﻳﻦ ﻓﺎﻳﻞ اﺑﺘﺪا ﻳﻚ ورودي ﺑﺮاي درﻳﺎﻓﺖ ﻛﻠﻤﻪ
از ﻛﺎرﺑﺮ اﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﻣﻘﺪار ورودي ﻛﺎرﺑﺮ را ﺑﻪ ﺗﺎﺑﻊ postﻣﻲ دﻫﺪ ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ ﻣﻘﺪار ورودي ﻛﺎرﺑﺮ
را ﺑﺎ اﺳﺘﻔﺎده از Ajaxﺑﻪ ﻓﺎﻳﻞ srtlen2.phpﻣﻴﻔﺮﺳﺘﺪ .در اﻳﻦ ﻓﺎﻳﻞ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ ﭘﺎراﻣﺘﺮ
ورودي ﺑﻪ اﻳﻦ ﺗﺎﺑﻊ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ آن را در ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ و آن
ﻣﺘﻐﻴﻴﺮ را ﺑﻪ ﺗﺎﺑﻊ strlenﻣﻲ دﻫﻴﻢ ﻛﻪ اﻳﻦ ﺗﺎﺑﻊ ﺗﻌﺪاد ﻛﺎراﻛﺘﺮ را ﺑﺮ ﻣﻴﮕﻴﺮداﻧﺪ و آن را ﭼﺎپ ﻣﻲ ﻛﻨﻴﻢ .
ﻓﺎﻳﻞ strlen1.php
129 | P a g e
ﻓﺎﻳﻞ strlen2.php
ﺟﺴﺘﺠﻮ درون رﺷﺘﻪ
ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( strposﻣﻲ ﺗﻮان ﻳﻚ آراﻳﻪ را درون آراﻳﻪ دﻳﮕﺮ ﺟﺴﺘﺠﻮ ﻛﺮد .اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﻧﺎم
searchajax.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ درون آن دو ورودي از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻣﻲ ﻛﻨﻴﻢ .ورودي اول ﻛﻠﻤﻪ
اﺳﺖ و ورودي دوم ﻣﻘﺪاري اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ﺟﺴﺘﺠﻮ ﺷﻮد اﻳﻦ دو ﻣﻘﺪار را ﺑﻪ ﺻﻔﺤﻪ searchajax2.php
ارﺳﺎل ﻣﻲ ﻛﻨﻴﻢ .در اﻳﻦ ﻓﺎﻳﻞ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ ورودي ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ
ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﺷﺪه ﺑﺎﺷﺪ اﻳﻦ دو ورودي را در ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ و ﺑﻪ ﺗﺎﺑﻊ strposﻣﻲ دﻫﻴﻢ ﻛﻪ
ﺷﻤﺎره ﻛﺎراﻛﺘﺮ را ﺑﺮ ﻣﻴﮕﻴﺮداﻧﺪ .
ﻓﺎﻳﻞ searchajax.php
130 | P a g e
ﻓﺎﻳﻞ searchajax2.php
ﺗﻜﺮار رﺷﺘﻪ
ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( str_repeatﻣﻲ ﺗﻮان ﻳﻚ رﺷﺘﻪ را ﺑﻪ ﻣﻴﺰان دﻟﺨﻮاه ﺗﻜﺮار ﻛﺮد .اﺑﺘﺪا ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ
ﻧﺎم repeatajax1.phpاﻳﺠﺎد ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ دو ورودي از ﻛﺎرﺑﺮ ﺑﮕﻴﺮد اوﻟﻲ ﻛﻠﻤﻪ ﻣﻮرده ﻧﻈﺮ و دوﻣﻲ ﻣﻴﺰان
ﺗﻜﺮار آن ﻣﻲ ﺑﺎﺷﺪ و اﻳﻦ دو ﻣﺘﻐﻴﻴﺮ را ﺑﺎ اﺳﺘﻔﺎده از Ajaxﺑﻪ ﺻﻔﺤﻪ repeatajax2.phpﻣﻴﻔﺮﺳﺘﺪ .در اﻳﻦ
ﺻﻔﺤﻪ اﺑﺘﺪا ﺑﺮرﺳﻲ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ آﻳﺎ دو ﭘﺎراﻣﺘﺮ ﺑﻪ اﻳﻦ ﺻﻔﺤﻪ ارﺳﺎل ﺷﺪه اﺳﺖ ﻳﺎ ﺧﻴﺮ اﮔﺮ ارﺳﺎل ﺷﺪه
ﺑﺎﺷﺪ آن دو را درون ﻣﺘﻐﻴﻴﺮ ذﺧﻴﺮه ﻣﻲ ﻛﻨﻴﻢ و ﻣﺘﻐﻴﻴﺮ ﻫﺎ را ﺑﻪ ﺗﺎﺑﻊ )( str_repeatﻣﻲ دﻫﻴﻢ .
ﻓﺎﻳﻞ repeatajax1.php
131 | P a g e
repeatajax2.php ﻓﺎﻳﻞ
132 | P a g e
ﻣﻨﺎﺑﻊ
ﻛﺘﺎب ﻣﺮﺟﻊ ﻛﺎﻣﻞ و ﻣﺼﻮر PHP 5ﭼﺎپ ﺳﻮم ) .ﻣﻬﻨﺪس ﻣﻬﺮداد ﺗﻮاﻧﺎ و ﻣﻬﻨﺪس ﺳﻌﻴﺪ
ﻫﺮاﺗﻴﺎن( اﻧﺘﺸﺎرات ﮔﺮوه ﻣﻬﻨﺪﺳﻲ – ﭘﮋوﻫﺸﻲ ﺳﺎﺣﺮ
زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ PHP 5ﺟﻠﺪ اول ) .ﻣﺤﻤﺪ ﻣﺼﺪري( اﻧﺘﺸﺎرات ﻧﺎﻗﻮس
زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ PHP 5ﺟﻠﺪ دوم ) .ﻣﺤﻤﺪ ﻣﺼﺪري( اﻧﺘﺸﺎرات ﻧﺎﻗﻮس
ﺳﺎﻳﺖ www.w3schools.com
ﺳﺎﻳﺖ www.php.net
ﺳﺎﻳﺖ www.en.wikipedia.org
اﻣﻴﺪوارم ﺑﺎ ﺧﻮاﻧﺪن اﻳﻦ ﻛﺘﺎب اﻟﻜﺘﺮوﻧﻴﻜﻲ ﺑﻪ ﻋﻠﻢ ﺷﻤﺎ اﺿﺎﻓﻪ ﺷﺪه ﺑﺎﺷﺪ .
از ﻃﺮﻳﻖ اﻳﻦ اﻳﻤﻴﻞ ﻣﻲ ﺗﻮاﻧﻴﺪ ﺳﻮاﻻت ﺧﻮد را ﺑﺎ ﺑﻨﺪه در ﻣﻴﺎن ﺑﮕﺬارﻳﺪ .
m.kabir8895@yahoo.com