You are on page 1of 22

Web Application Development

Cookies & Sessions

Lec 10

Mohammed
1
‫اﻟﻜﻮﻛﻴﺰ ‪cookies‬‬
‫ﺗﻌﺘﺒﺮ ﻣﻠﻔﺎت ﺻﻐﻴﺮه ﻳﺤﺘﻔﻆ ﻓﻴﻬﺎ اﻟﺴﻴﺮﻓﺮ ﻓﻲ ﺟﻬﺎز‬
‫اﻟﻌﻤﻴﻞ‪،‬وﻓﻲ ﻛﻞ ﻣﺮه ﻳﺮﺳﻠﻬﺎ اﻟﺴﻴﺮﻓﺮ إﻟﻰ اﻟﻌﻤﻴﻞ ﻣﻊ ﻛﻞ‬
‫ﻃﻠﺐ ﻣﻦ ﻋﻤﻴﻞ ﻟﻠﺴﻴﺮﻓﺮ‪.‬‬

‫ﺗﺴﺘﺨﺪم ﻟﺘﺨﺰﻳﻦ اﺳﻢ ﻣﺘﻐﻴﺮ وﻗﻴﻤﺘﻪ ﻣﻊ ﻣﻌﻠﻮﻣﺎت ﺣﻮل‬


‫اﻟﻤﻮﻗﻊ اﻟﺘﻲ أﺗﺖ ﻣﻨﻪ وﺗﺎرﻳﺦ اﻧﺘﻬﺎءﻫﺎ ‪.‬‬

‫ﺗﺴﺘﺨﺪم ﻟﺤﻔﻆ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻤﺴﺘﺨﺪم‪.‬‬


‫‪2‬‬
‫اﻟﻜﻮﻛﻴﺰ ‪cookies‬‬
‫اﻟﻜﻮﻛﻴﺰ ﻋﺒﺎره ﻋﻦ ﺗﻘﻨﻴﺔ ﻟﻠﺘﺨﺰﻳﻦ ﻣﻦ ﺟﻬﺔ اﻟﻌﻤﻴﻞ‬
‫)‪ (client-side storage‬ﺗﺘﺨﺰن ﻓﻲ ﻣﻠﻔﺎت ﻓﻲ ﺟﻬﺎز‬
‫اﻟﻌﻤﻴﻞ ﻳﺘﻢ اﻟﻌﺒﻮر إﻟﻰ ﻫﺬه اﻟﻜﻮﻛﻴﺰ وﻣﺴﺤﻬﺎ ﻣﻦ اﻟﻤﻜﺎن‬
‫اﻟﺘﻲ ارﺳﻠﺖ ﻣﻨﻪ‪.‬‬

‫ﻋﻨﺪﻣﺎ ﻳﻄﻠﺐ اﻟﻤﺴﺘﻌﺮض ﺻﻔﺤﺔ ﻣﻦ اﻟﺴﻴﺮﻓﺮ وﻫﺬه‬


‫اﻟﺼﻔﺤﺔ ﺗﻘﻮم ﺑﺘﺘﺨﺰﻳﻦ ﻛﻮﻛﻴﺰ ﻓﺈن اﻟﺴﻴﺮﻓﺮ ﻳﻘﻮم ﺑﺎﺧﺒﺎر‬
‫اﻟﻤﺴﺘﻌﺮض ﺑﺄﻧﻪ ﺳﻴﻘﻮم ﺑﻮﺿﻊ ﻛﻮﻛﻴﺰ ﻟﻼﺳﺘﻌﻤﺎل ﻻﺣﻘﺎ ‪.‬‬

‫‪3‬‬
‫اﻟﻜﻮﻛﻴﺰ ‪cookies‬‬
‫ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﻃﻠﺐ اﻟﺼﻔﺤﺔ ﻓﻲ ﻣﺮة آﺧﺮي ﻳﻘﻮم اﻟﻤﺴﺘﻌﺮض‬
‫ً‬
‫ﺳﺎﺑﻘﺎ ﻋﻨﺪ ﻃﻠﺐ‬ ‫ﺑﺎرﺳﺎل اﻟﺒﻴﺎﻧﺎت اﻟﺘﻲ ﺗﻢ إﻧﺸﺎؤﻫﺎ‬
‫اﻟﺼﻔﺤﻪ ‪.‬‬

‫ﻳﺘﻢ اﻧﺘﻬﺎء ﻣﺪه اﻟﻜﻮﻛﻴﺰ ﺑﺈﻧﺘﻬﺎء وﻗﺖ ﺻﻼﺣﻴﺘﻬﺎ ااﻟﻤﺤﺪد‬


‫ً‬
‫ﻓﻮرﻳﺎ ﻋﻨﺪ اﻏﻼق اﻟﺼﻔﺤﺔ‬ ‫ﻣﻦ ﻗﺒﻞ اﻟﺴﻴﺮﻓﺮ وﻳﺘﻢ ﻣﺴﺤﻬﺎ‬
‫ً‬
‫ﺻﻔﺮا ﻣﻦ اﻟﺜﻮاﻧﻲ ‪.‬‬ ‫إذا ﻛﺎن وﻗﺖ ﺻﻼﺣﻴﺘﻬﺎ‬

‫‪4‬‬
‫اﻧﺸﺎء اﻟﻜﻮﻛﻴﺰ ‪Create Cookies With PHP‬‬

‫ﻳﻘﻮم اﻟﺴﻴﺮﻓﺮ ﺑﺈرﺳﺎل اﻟﻜﻮﻛﻴﺰ ﻋﺒﺮ اﻟـ‪HTTP Headers‬‬


‫اﻟﺬي ﻳﺘﻢ إرﺳﺎﻟﻪ ﻗﺒﻞ أي ﻣﺨﺮج ﻣﻦ ﻣﺨﺮﺟﺎت اﻟـ‪html‬‬

‫‪PHP‬‬
‫ﺗﺄﺗﻲ ﺑﺪﻋﻢ ﻛﺎﻣﻞ ﻟﻠﻜﻮﻛﻴﺰ ﺑﻮاﺳﻄﺔ اﻟﺪاﻟﺔ)( ‪setcookie‬‬
‫ﺑﺎﺳﺘﺜﻨﺎء أﻧﻚ ﻋﻨﺪ اﺳﺘﻌﻤﺎﻟﻬﺎ ﻳﺠﺐ اﺳﺘﻌﻤﺎﻟﻬﺎ ﻗﺒﻞ ﻃﺒﺎﻋﺔ‬
‫أي ﻣﺨﺮﺟﺎت ‪. html‬‬

‫‪5‬‬
setcookie()
: ‫اﻟﺪاﻟﺔ‬
setcookie()
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‬
Syntax:
setcookie(name, value, expire, path, domain,
secure, httponly);

‫ ﺑﻘﻴﺔ اﻟﺤﻘﻮل ﻏﻴﺮ إﻟﺰاﻣﻴﺔ‬،‫ﻓﻘﻂ ﺣﻘﻞ اﻻﺳﻢ ﻫﻮ اﻟﻀﺮوري‬

6
‫)(‪setcookie‬‬
‫ﺗﺎﺧﺬ اﻟﺪاﻟﺔ ‪ setcookie‬ﺛﻼث ﻣﻌﺎﻣﻼت ‪ ،‬اﻟﺜﻼﺛﺔ اﻷوﻟﻰ‬
‫ً‬
‫اﺳﺘﺨﺪاﻣﺎ وﻫﻲ ﺑﺎﻟﺘﺮﺗﻴﺐ ‪:‬‬ ‫ﻫﻲ اﻷﻫﻢ واﻷﻣﺜﻞ‬
‫ﻗﻴﻤﺔ ﺣﺮﻓﻴﺔ ﻳﺘﻢ ﺗﺨﺰﻳﻨﻬﺎ ﻛﺎﺳﻢ ﻟﻠﻤﺘﻐﻴﺮ‬
‫ﻗﻴﻤﺔ ﺣﺮﻓﻴﺔ ﻳﺘﻢ ﺗﺨﺰﻳﻨﻬﺎ ﻛﻘﻴﻤﺔ ﻟﺬﻟﻚ اﻟﻤﺘﻐﻴﺮ‬
‫اﻟﺬي ﻳﻘﻮم ﺑﺎﻹﺷﺎرة إﻟﻰ ﺗﺎرﻳﺦ إﻧﺘﻬﺎء ‪Unix timestamp‬‬

‫‪7‬‬
‫)(‪setcookie‬‬
‫اﻟﺜﻼث اﻟﻌﻮاﻣﻞ اﻷﺧﺮي اﻟﺘﻲ ﻳﺘﻢ ﺳﺘﺨﺪاﻣﻬﺎ أﻳﻀﺎ ﻓﻲ اﻟﻜﻮﻛﻴﺰ وﻟﻜﻨﻬﺎ‬
‫ﻧﺎدرة اﻻﺳﺘﺨﺪام وﻫﻲ ‪:‬‬
‫اﻟﻤﺴﺎر اﻟﺬي ﻳﺘﻢ إرﺳﺎل اﻟﻜﻮﻛﻴﺰ إﻟﻴﻪ ﻓﻠﻮ ﺗﻢ ﻓﺘﺢ ﻧﻔﺲ اﻟﺼﻔﺤﺔ ﻣﻦ ﻧﻔﺲ‬
‫ﻼ اﻟﻤﺴﺎر ﻛﺎن ‪ pag\url\one‬وﺗﻢ‬ ‫اﻟﻤﻮﻗﻊ وﻟﻜﻦ ﻣﻦ ﻣﺴﺎر اﺧﺮ ) ﻣﺜ ً‬
‫ﺗﻐﻴﻴﺮه إﻟﻰ ‪ page\url\two‬ﻓﺎن اﻟﻤﺴﺘﻌﺮض ﻟﻦ ﻳﻘﻮم ﺑﺎرﺳﺎل اﻟﺒﻴﺎﻧﺎت‬
‫إﻟﻲ اﻟﺼﻔﺤﺔ ﻷﻧﻪ ﺗﻢ ﺗﺤﺪﻳﺪ اﻟﻤﺴﺎر اﻟﺬي ﺳﻴﺘﻢ ارﺳﺎل اﻟﻜﻮﻛﻴﺰ اﻟﻴﻪ (‬

‫اﻟﺪوﻣﻴﻦ اﻟﺬي ﺳﻴﺘﻢ إرﺳﺎل اﻟﺒﻴﺎﻧﺎت إﻟﻴﻪ وﻫﻮ ﻣﻔﻴﺪ ﻓﻲ ﺣﺎﻟﺔ ﻣﺎ إذا ﻛﺎن‬
‫ﻫﻨﺎك أﻛﺜﺮ ﻣﻦ دوﻣﻴﻦ ﺗﺮﻳﺪ ارﺳﺎل اﻟﻜﻮﻛﻴﺰ اﻟﻴﻪ‬

‫ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع ‪ integer‬ﻳﺘﻢ اﻹﺷﺎرة إﻟﻴﻪ ﺑـ ‪ secure‬ﻳﺘﻢ ﻓﻲ ﺣﺎﻟﺔ‬


‫اﺳﺘﺨﺪام ﻋﻤﻠﻴﺎت ﺗﺸﻔﻴﺮ ﺑﺎﻟـ ‪SSL‬‬

‫‪8‬‬
‫"‪"/‬‬
‫ﺗﻌﻨﻲ ان اﻟﻜﻮﻛﻴﺰ‬
‫ﻣﺘﻮﻓﺮه ﻓﻲ ﻛﻞ‬
‫اﻟﻤﻮﻗﻊ‬

‫‪9‬‬
‫اﺳﺘﺮﺟﺎع اﻟﻜﻮﻛﻴﺰ‬
‫ﻳﻤﻜﻦ اﺳﺘﺮﺟﺎع ﻣﻌﻠﻮﻣﺎت اﻟﻜﻮﻛﻴﺰ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺎم‬
‫‪global variable $_COOKIE‬‬
‫أو ﻋﻦ ﻃﺮﻳﻖ اﻟﺪاﻟﺔ)( ‪ isset‬ﻟﻠﺘﺄﻛﺪ ﻣﻦ وﺟﻮد اﻟﻜﻮﻛﻴﺰ‬

‫‪10‬‬
‫ﺗﻌﺪﻳﻞ ﻗﻴﻤﻪ اﻟﻜﻮﻛﻴﺰ ‪Modify a Cookie‬‬
‫‪Value‬‬
‫ﻳﺘﻢ ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻋﺎده اﺳﺘﺨﺪام اﻟﺪاﻟﺔ ﻧﻔﺴﻬﺎ وﻟﻜﻦ‬
‫ﺑﺎﻟﻘﻴﻢ اﻟﺠﺪﻳﺪة‬

‫‪11‬‬
‫ﺣﺬف اﻟﻜﻮﻛﻴﺰ ‪Delete a Cookie‬‬
‫ﻳﺘﻢ اﺳﺘﺨﺪام ﻧﻔﺲ اﻟﺪاﻟﺔ‪ ،setcookie‬وﻟﻜﻦ ﺑﺘﺤﺪﻳﺪ‬
‫وﻗﺖ إﻧﺘﻬﺎء اﻟﻜﻮﻛﻴﺰ‬

‫‪12‬‬
php ‫اﻟﺠﻠﺴﺎت ﻓﻲ‬

PHP SESSIONS

13
‫ﻳﺴﺘﺨﺪم اﻟـ‪ session‬ﻟﻌﻤﻞ ﻣﻴﻜﺎﻧﻴﻜﻴﺔ ﺗﻮاﺻﻞ ﺑﻴﻦ اﻟﻤﺴﺘﺨﺪم‬
‫واﻟﺴﻴﺮﻓﺮ‪.‬‬

‫ان اﻟـ‪ http‬ﻻ ﻳﻮﻓﺮ ﻟﻨﺎ ﻣﻴﻜﺎﻧﻴﻜﻴﺔ ﻟﻌﻤﻞ ﺗﻮاﺻﻞ ‪ ،‬ﻓﺈذا ﻃﻠﺐ‬
‫اﻟﻤﺴﺘﺨﺪم ﺻﻔﺤﺔ ﻣﻦ اﻟﺴﻴﺮﻓﺮ ﻓﺈن اﻟﺴﻴﺮﻓﺮ ﻳﻘﻮم ﺑﺈﻋﻄﺎﺋﻪ ﻣﺎ‬
‫أراد وﻳﻨﺘﻬﻲ ﻋﻨﺪ ذﻟﻚ ﻓﻼ ﻳﻌﺮف إن ﻛﺎن ﻫﻮ ﻧﻔﺲ اﻟﻤﺴﺘﺨﺪم أو‬
‫ﻟﻴﺲ ﻫﻮ ‪.‬‬
‫ﻷﺟﻞ ذﻟﻚ ﺗﻢ اﻧﺸﺎء ﺗﻘﻨﻴﺔ اﻟـ‪ session‬ﻷﺟﻞ ﻋﻤﻞ ﺗﻘﻨﻴﺔ‬
‫ﺗﻮاﺻﻞ ﺑﻴﻦ اﻟﻤﺴﺘﺨﺪم واﻟﻤﻮﻗﻊ ‪ ،‬ﻓﺒﺈﺳﺘﻄﺎﻋﺘﻚ ﻣﺜ ً‬
‫ﻼ أن ﺗﻘﻮم‬
‫ﺑﺘﺤﺪﻳﺪ ﻋﺪد زﻳﺎرات ﻣﺴﺘﺨﺪم ﻣﻌﻴﻦ ﻟﺼﻔﺤﺘﻚ ﻟﻴﻮم واﺣﺪ أو‬
‫ﻷﺳﺒﻮع أو ﻟﻤﺪة ﻣﻌﻴﻨﺔ ﻣﻦ اﻟﻮﻗﺖ‬

‫‪14‬‬
‫ﻋﻠﻰ ﻋﻜﺲ اﻟﻜﻮﻛﻴﺰ ﻓﺈن ﺑﻴﺎﻧﺎت اﻟﺠﻠﺴﺎت ﻻ ﺗﺨﺰن ﻋﻨﺪ‬
‫اﻟﻌﻤﻴﻞ‪.‬‬

‫ﻳﺘﻢ ﺣﻔﻆ ﺑﻴﺎﻧﺎت اﻟﺠﻠﺴﺎت ‪ sessions‬ﺑﻴﻦ اﻟﺼﻔﺤﺎت ﻋﻦ‬


‫ﻃﺮﻳﻖ ﻣﺘﻐﻴﺮات اﻟﺠﻠﺴﺎت‪.‬‬

‫‪15‬‬
‫ﻳﺘﻢ اﻧﺸﺎء اﻟﺠﻠﺴﺎت ﻋﻦ ﻃﺮﻳﻖ اﻟﺪاﻟﺔ)( ‪session_start‬‬
‫ﻣﺘﻐﻴﺮات اﻟﺠﻠﺴﺎت ﻳﺘﻢ ﺣﻔﻈﻬﻢ ﻓﻲ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺎم‬
‫‪SESSION_$‬‬

‫ﻻزم أن ﺗﻜﻮن اﻟﺪاﻟﺔ ‪ ,session_start‬ﻓﻲ أول اﻟﺼﻔﺤﺔ‬


‫ﻗﺒﻞ وﺳﻢ‪html‬‬

‫‪16‬‬
17
Get PHP Session Variable Values

18
‫ﺗﻌﺪﻳﻞ ‪Modify a PHP Session Variable‬‬
‫ﺑﻴﺎﻧﺎت اﻟﺠﻠﺴﺎت‬
‫ﻓﻘﻂ ﻳﺘﻢ إﻋﺎدة ﻛﺘﺎﺑﺔ اﻟﺪاﻟﺔ ﻣﺮه اﺧﺮى‬

‫‪19‬‬
‫إﻧﻬﺎء اﻟﺠﻠﺴﺎت ‪Destroy a PHP Session‬‬

‫ﻟﻌﻤﻠﻴﺔ ﺣﺬف ﻛﻞ ﻣﻌﻠﻮﻣﺎت اﻟﺠﻠﺴﺎت‪ ،‬ﻋﻠﻴﻚ اﺳﺘﺨﺪام‬


‫داﻟﺘﻴﻦ ‪:‬‬
‫)(‪session_unset‬‬
‫ﺗﺴﺘﺨﺪم ﻟﺤﺬف ﻛﻞ اﻟﻤﺘﻐﻴﺮات اﻟﻌﺎﻣﺔ ﻟﻠﺠﻠﺴﺎت‬
‫)(‪session_destroy‬‬
‫ﺗﺴﺘﺨﺪم ﻟﺤﺬف اﻟﺠﻠﺴﺎت ﺑﺎﻟﻜﺎﻣﻞ‬

‫‪20‬‬
21
22

You might also like