Web2 Lec6.en - Ar

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

‫ﻣﺘﺮﺟﻢ ﻣﻦ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ ﺇﻟﻰ ﺍﻟﻌﺮﺑﻴﺔ ‪www.onlinedoctranslator.

com -‬‬

‫ﺗﻘﻨﻴﺎﺕﺍﻟﻮﻳﺐ ‪2‬‬
‫ﺍﻟﻨﻤﺎﺫﺝﻭﺍﻟﻌﺎﻟﻤﻴﺔ‬
‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕ‬
‫ﻟﻴﻚ‪6‬‬

‫‪1‬‬
‫ﻣﺤﻤﺪ‬
‫ﺍﻟﺨﻄﻮﻁﺍﻟﻌﺮﻳﻀﺔ‬

‫• ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻧﻤﻮﺫﺝ ‪PHP‬‬


‫• ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﻣﻘﺎﺑﻞ ﻣﺎ ﺑﻌﺪ‬

‫• ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻌﺎﻟﻤﻴﺔ‬

‫‪2‬‬
‫ﻣﻌﺎﻟﺠﺔﻧﻤﺎﺫﺝ ‪PHP‬‬
‫• ﻹﻧﺸﺎء ﻧﻤﻮﺫﺝ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻨﺼﺮ >‪ <form‬ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫<‪– >form action="form.php" Method="post"<>form‬‬

‫• ﻳﺤﺘﻮﻱ ﻋﻨﺼﺮ >‪ <form‬ﻋﻠﻰ ﺧﺎﺻﻴﺘﻴﻦ ﻣﻬﻤﺘﻴﻦ‪:‬‬

‫‪-‬ﺍﻹﺟﺮﺍء‪ :‬ﻳﺤﺪﺩ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺬﻱ ﻳﻌﺎﻟﺞ ﺇﺭﺳﺎﻝ ﺍﻟﻨﻤﻮﺫﺝ‪ .‬ﻓﻲ‬


‫ﻫﺬﺍﺍﻟﻤﺜﺎﻝ‪ ،‬ﺳﻴﻘﻮﻡ ‪ form.php‬ﺑﻤﻌﺎﻟﺠﺔ ﺍﻟﻨﻤﻮﺫﺝ‪.‬‬

‫‪-‬ﺍﻟﻄﺮﻳﻘﺔ‪ :‬ﺗﺤﺪﺩ ﻃﺮﻳﻘﺔ ‪ HTTP‬ﻹﺭﺳﺎﻝ ﺍﻟﻨﻤﻮﺫﺝ‪ .‬ﺃﺳﺎﻟﻴﺐ‬


‫ﺍﻟﻨﻤﻮﺫﺝﺍﻷﻛﺜﺮ ﺍﺳﺘﺨﺪﺍﻣﺎً ﻫﻲ ‪ POST‬ﻭ‪ .GET‬ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ‪،‬‬
‫ﻃﺮﻳﻘﺔﺍﻟﻨﻤﻮﺫﺝ ﻫﻲ ﺍﻟﻨﺸﺮ‪.‬‬

‫‪3‬‬
‫ﻣﻌﺎﻟﺠﺔﻧﻤﺎﺫﺝ ‪PHP‬‬
‫• ﺃﺳﻠﻮﺏ ﺍﻟﻨﻤﻮﺫﺝ ﻏﻴﺮ ﺣﺴﺎﺱ ﻟﺤﺎﻟﺔ ﺍﻷﺣﺮﻑ‪ .‬ﻫﺬﺍ ﻳﻌﻨﻲ‬
‫ﺃﻧﻪﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻱ ﻣﻨﺸﻮﺭ ﺃﻭ ﺍﻟﺤﺼﻮﻝ ﻋﻠﻴﻪ‪ .‬ﺇﺫﺍ ﻟﻢ‬
‫ﺗﺤﺪﺩﺳﻤﺔ ﺍﻟﻄﺮﻳﻘﺔ‪ ،‬ﻓﺴﻴﺴﺘﺨﺪﻡ ﻋﻨﺼﺮ ﺍﻟﻨﻤﻮﺫﺝ ﻃﺮﻳﻘﺔ‬
‫‪ get‬ﺑﺸﻜﻞ ﺍﻓﺘﺮﺍﺿﻲ‪.‬‬

‫• ﻋﺎﺩﺓ‪ ً،‬ﻳﺤﺘﻮﻱ ﺍﻟﻨﻤﻮﺫﺝ ﻋﻠﻰ ﻋﻨﺼﺮ ﺇﺩﺧﺎﻝ ﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ‪،‬‬


‫ﻭﻳﺸﺘﻤﻞﻋﻨﺼﺮ ﺍﻹﺩﺧﺎﻝ ﻋﻠﻰ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﻬﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﺍﻻﺳﻢ‪،‬ﻭﺍﻟﻨﻮﻉ‪ ،‬ﻭﺍﻟﻘﻴﻤﺔ‪ .‬ﺳﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺳﻤﺔ ﺍﻻﺳﻢ‬
‫ﻟﻠﻮﺻﻮﻝﺇﻟﻰ ﺍﻟﻘﻴﻤﺔ ﻓﻲ ‪.PHP‬‬

‫‪4‬‬
‫ﺍﻟﺘﻌﺎﻣﻞﻣﻊ ﺍﻟﻨﻤﻮﺫﺝ‬

‫ﻟﺠﻤﻊ‬superglobals$_POST‫ﻭ‬$_GETPHP ‫• ﺍﺳﺘﺨﺪﺍﻣﺎﺕ‬
.‫ﺑﻴﺎﻧﺎﺕﺍﻟﻨﻤﻮﺫﺝ‬
<‫>ﺃﺗﺶ ﺗﻲ ﺃﻡ ﺃﻝ‬

<‫>ﺍﻟﺠﺴﻢ‬
name="email"< >br< >‫<"ﺇﺩﺧﺎﻝ ﻧﻮﻉ = "ﺇﺭﺳﺎﻝ‬
‫ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ‬: >input type="text"
‫ﺍﻻﺳﻢ‬: >input type="text" name="name"<>br<
>form action="welcome.php"method="post"<
<‫ﺍﻟﻨﻤﻮﺫﺝ‬/>
<‫ﺍﻟﺠﺴﻢ‬/>
>/html<
5
‫ﺍﻟﺘﻌﺎﻣﻞﻣﻊ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﻳﺘﻢ ﺇﺭﺳﺎﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺇﻣﺎ ﺑﻄﺮﻳﻘﺔ ﺍﻟﺤﺼﻮﻝ ﺃﻭ ﺍﻟﻨﺸﺮ ﻟﻠﻤﻌﺎﻟﺠﺔ‪،‬‬


‫ﻭﻳﺤﺪﺩﺍﻹﺟﺮﺍء ﺍﻟﻤﻠﻒ ﺍﻟﺬﻱ ﺳﻴﻘﻮﻡ ﺑﻤﻌﺎﻟﺠﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ‪.‬‬

‫‪-‬ﺍﻟﺴﺎﺑﻖ‪:‬‬

‫• ﺍﻷﺳﻠﻮﺏ ﻫﻮ ﺁﺧﺮ‬
‫• ﻣﻌﺎﻟﺠﺔ ﺍﻟﻤﻠﻒ ﻣﻮﺿﻊ ﺗﺮﺣﻴﺐ‪php.‬‬
‫• ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﻠﻒ ‪ PHP‬ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫<? ;["‪: >?php echo $_POST]"email‬ﻋﻨﻮﺍﻥ‬


‫ﺑﺮﻳﺪﻙﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻫﻮ‬
‫<‪>?php echo $_POST]"name"[; ?<>br‬‬
‫‪6‬‬
>form action="form.php" Method="post"<
<‫>ﺩﻳﻒ‬
>label for="email"<‫ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ‬:>/label<
type = "email" id = "email" name = "email" /< >/div<
>input
type="submit"<‫>ﺇﺭﺳﺎﻝ‬/button< >/form<
>button

‫ ﻟﻠﻤﻌﺎﻟﺠﺔ‬form.php ‫ﺃﺭﺳﻞﺇﻟﻰ‬

>?php
} (isset)$_POST]'email'[()‫ﺇﺫﺍ‬
var_dump)$_POST]'email'[(;
7 {
‫ﻃﺮﻳﻘﺔ‪HTTP POST‬‬
‫• ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻨﻤﻮﺫﺝ ﻳﺴﺘﺨﺪﻡ ﺃﺳﻠﻮﺏ ‪ ،POST‬ﻓﺴﻴﻘﻮﻡ‬
‫ﻣﺘﺼﻔﺢﺍﻟﻮﻳﺐ ﺑﺘﻀﻤﻴﻦ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﻓﻲ ﻧﺺ‬
‫ﻃﻠﺐ‪ .HTTP‬ﺑﻌﺪ ﺇﺭﺳﺎﻝ ﺍﻟﻨﻤﻮﺫﺝ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﻟﻮﺻﻮﻝ‬
‫ﺇﻟﻰﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﻋﺒﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺍﻟﻨﻘﺎﺑﻴﺔ ‪POST_$‬‬
‫ﻓﻲ‪.PHP‬‬

‫• ﺇﺫﺍ ﻟﻢ ﻳﻜﻦ ﺍﻟﻨﻤﻮﺫﺝ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺇﺩﺧﺎﻝ )ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ :‬ﺍﻟﺒﺮﻳﺪ‬
‫ﺍﻹﻟﻜﺘﺮﻭﻧﻲ(‪ ،‬ﻓﻠﻦ ﻳﺤﺘﻮﻱ ‪ POST_$‬ﻋﻠﻰ ﺃﻱ ﻋﻨﺼﺮ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﻤﻔﺘﺎﺡ‬
‫"‪."email‬‬
‫– ﻟﻠﺘﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ‪،‬‬
‫ﻳﻤﻜﻨﻚﺍﺳﺘﺨﺪﺍﻡﺇﻳﺴﻴﺖ )(‬

‫‪8‬‬
‫ﺑﺮﻳﺪ‬
‫• ﻣﻌﻠﻮﻣﺎﺕ ﻃﺮﻳﻘﺔ ‪ POST‬ﻏﻴﺮ ﻣﺮﺉﻴﺔ ﻟﻶﺧﺮﻳﻦ‪.‬‬

‫• ﺍﻟﻤﺸﺎﺭﻛﺔ ﻟﻴﺲ ﻟﻬﺎ ﺣﺪﻭﺩ ﻋﻠﻰ ﻛﻤﻴﺔ‬


‫ﺍﻟﻤﻌﻠﻮﻣﺎﺕﺍﻟﺘﻲ ﺳﻴﺘﻢ ﺇﺭﺳﺎﻟﻬﺎ‪.‬‬

‫• ﻋﻦ ﻃﺮﻳﻖ ﺍﻟﻨﺸﺮ‪ ،‬ﻟﻴﺲ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﻭﺿﻊ ﺇﺷﺎﺭﺓ ﻣﺮﺟﻌﻴﺔ ﻋﻠﻰ‬


‫ﺍﻟﺼﻔﺤﺔ‪.‬‬
‫‪-‬ﻷﻧﻪ ﻻ ﻳﺘﻢ ﻋﺮﺽ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻓﻲ ﻋﻨﻮﺍﻥ ‪URL‬‬

‫ﻣﻼﺣﻈﺔ‪:‬ﻳﻔﻀﻞ ﺍﻟﻤﻄﻮﺭﻭﻥ ‪ POST‬ﻹﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ‪.‬‬


‫‪9‬‬
‫ﻃﺮﻳﻘﺔﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ‪HTTP‬‬

‫• ﻋﻨﺪ ﺇﺭﺳﺎﻝ ﻧﻤﻮﺫﺝ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺳﻠﻮﺏ ‪ ،GET‬ﻳﻤﻜﻨﻚ ﺍﻟﻮﺻﻮﻝ‬


‫ﺇﻟﻰﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﻓﻲ ‪ PHP‬ﻋﺒﺮ ﺍﻟﻤﺼﻔﻮﻓﺔ ﺍﻟﻨﻘﺎﺑﻴﺔ ‪.GET_$‬‬

‫• ﻋﻠﻰ ﻋﻜﺲ ﺃﺳﻠﻮﺏ ‪ ،POST‬ﻳﻘﻮﻡ ﺃﺳﻠﻮﺏ ‪ GET‬ﺑﺈﻟﺤﺎﻕ ﺑﻴﺎﻧﺎﺕ‬


‫ﺍﻟﻨﻤﻮﺫﺝﻓﻲ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺬﻱ ﻳﻌﺎﻟﺞ ﺍﻟﻨﻤﻮﺫﺝ‪.‬‬

‫• ﻋﻨﺪ ﺇﺩﺧﺎﻝ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺑﺎﺳﻢ ‪ hello@phptutorial.net‬ﺇﻟﻰ‬


‫ﻋﻨﻮﺍﻥ‪ URL‬ﻣﺜﻞ ‪ http://localhost/form.php‬ﺗﻜﻮﻥ ﺍﻟﻨﺘﻴﺠﺔ‪:‬‬

‫‪%40– http://localhost/form.php?email=hello‬ﺷﺒﻜﺔ ‪phptutorial.‬‬

‫‪10‬‬
‫ﻃﺮﻳﻘﺔﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ‪HTTP‬‬

‫• ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻨﻤﻮﺫﺝ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻨﺎﺻﺮ ﺇﺩﺧﺎﻝ ﻣﺘﻌﺪﺩﺓ‪،‬‬


‫ﻓﺴﻴﻘﻮﻡﻣﺘﺼﻔﺢ ﺍﻟﻮﻳﺐ ﺑﺈﻟﺤﺎﻕ ﻣﺪﺧﻼﺕ ﺍﻟﻨﻤﻮﺫﺝ‬
‫ﺑﻌﻨﻮﺍﻥ‪ URL‬ﺑﺎﻟﺘﻨﺴﻴﻖ ﺍﻟﺘﺎﻟﻲ‪:‬‬
‫‪name1=value1&name2=value2&name3=value3‬‬
‫‪– http://localhost/form.php‬‬

‫‪11‬‬
‫ﻳﺤﺼﻞ‬
‫• ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻄﺮﻳﻘﺔ ﻣﺮﺉﻴﺔ ﻟﻠﺠﻤﻴﻊ‪.‬‬
‫– ﻳﺘﻢ ﻋﺮﺽ ﺟﻤﻴﻊ ﺃﺳﻤﺎء ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﻭﻗﻴﻤﻬﺎ ﻓﻲ ﻋﻨﻮﺍﻥ ‪URL‬‬

‫• ﻟﺪﻯ ‪ GET‬ﺣﺪﻭﺩ ﻟﻜﻤﻴﺔ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﻲ ﺳﻴﺘﻢ ﺇﺭﺳﺎﻟﻬﺎ‪.‬‬

‫‪-‬ﺍﻟﺤﺪ ﺣﻮﺍﻟﻲ ‪ 2000‬ﺣﺮﻑ‪.‬‬

‫• ﺑﻮﺍﺳﻄﺔ ‪ ،GET‬ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﻭﺿﻊ ﺇﺷﺎﺭﺓ ﻣﺮﺟﻌﻴﺔ ﻋﻠﻰ ﺍﻟﺼﻔﺤﺔ‪.‬‬

‫• ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ‪ GET‬ﻹﺭﺳﺎﻝ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻏﻴﺮ ﺍﻟﺤﺴﺎﺳﺔ‪.‬‬

‫ﻣﻼﺣﻈﺔ‪:‬ﻻ ﺗﺴﺘﺨﺪﻡ ﻣﻄﻠﻘﺎً ‪ get‬ﻹﺭﺳﺎﻝ ﻣﻌﻠﻮﻣﺎﺕ‬


‫‪12‬‬
‫ﺣﺴﺎﺳﺔﻣﺜﻞ‪ :‬ﻛﻠﻤﺎﺕ ﺍﻟﻤﺮﻭﺭ‬
‫ﺍﻟﺤﺼﻮﻝﻋﻠﻰ ﻣﻘﺎﺑﻞ ﺍﻟﻨﺸﺮ‬

‫• ﻳﻘﻮﻡ ﻛﻞ ﻣﻦ ‪ GET‬ﻭ‪ POST‬ﺑﺈﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ‪.‬‬


‫‪-‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ ﺍﻟﻤﺼﻔﻮﻓﺔ )‪.((... ،key1 =< value1، key2 =< value2، key3 =< value3‬‬

‫• ﻳﺘﻢ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ ﻣﻦ ‪ GET‬ﻭ‪ POST‬ﻋﻠﻰ ﺃﻧﻬﻤﺎ ‪ GET_$‬ﻭ‪.POST_$‬‬

‫• ﻳﻌﺪ ﻛﻞ ﻣﻦ ‪ GET‬ﻭ‪ POST‬ﻋﺎﻟﻤﻴﻴﻦ ﻓﺎﺉﻘﻴﻦ‪:‬‬


‫‪-‬ﻣﻤﺎ ﻳﻌﻨﻲ ﺃﻧﻪ ﻳﻤﻜﻦ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﺩﺍﺉﻤﺎً‪ ،‬ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺍﻟﻨﻄﺎﻕ ‪ -‬ﻭﻳﻤﻜﻨﻚ‬
‫ﺍﻟﻮﺻﻮﻝﺇﻟﻴﻬﺎ ﻣﻦ ﺃﻱ ﻭﻇﻴﻔﺔ ﺃﻭ ﻓﺉﺔ ﺃﻭ ﻣﻠﻒ ﺩﻭﻥ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﺍﻟﻘﻴﺎﻡ ﺑﺄﻱ ﺷﻲء‬
‫ﺧﺎﺹ‪.‬‬

‫‪ URL.‬ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻦ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺗﻢ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺤﺎﻟﻲ‬


‫ﻋﺒﺮﻣﻌﻠﻤﺎﺕ ‪• $_GET‬‬

‫‪ HTTP POST.‬ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻦ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺗﻢ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‬


‫ﺍﻟﺤﺎﻟﻲﻋﺒﺮ ﻃﺮﻳﻘﺔ ‪• $_POST‬‬

‫‪13‬‬
‫ﺍﻟﺤﺼﻮﻝﻋﻠﻰ ‪ HTTP‬ﺃﻭ ﺍﻟﻨﺸﺮ‬

‫• ﺑﺸﻜﻞ ﻋﺎﻡ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺳﻠﻮﺏ ‪ GET‬ﻋﻨﺪﻣﺎ ﻳﻘﻮﻡ‬


‫ﺍﻟﻨﻤﻮﺫﺝﺑﺎﺳﺘﺮﺩﺍﺩ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﻦ ﺍﻟﺨﺎﺩﻡ ﻓﻘﻂ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪،‬‬
‫ﻳﺠﺐﺃﻥ ﻳﺴﺘﺨﺪﻡ ﻧﻤﻮﺫﺝ ﺍﻟﺒﺤﺚ ﺍﻟﺬﻱ ﻳﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ‬
‫ﺑﺎﻟﺒﺤﺚﻋﻦ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﻃﺮﻳﻘﺔ ‪.GET‬‬

‫• ﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ ﻟﺪﻳﻚ ﻧﻤﻮﺫﺝ ﻳﺘﺴﺒﺐ ﻓﻲ ﺗﻐﻴﻴﺮ ﻓﻲ ﺍﻟﺨﺎﺩﻡ‪ ،‬ﻳﺠﺐ‬


‫ﻋﻠﻴﻚﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻳﻘﺔ ‪ .POST‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺍﻟﻨﻤﻮﺫﺝ‬
‫ﺍﻟﺬﻱﻳﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺑﺎﻻﺷﺘﺮﺍﻙ ﻓﻲ ﺭﺳﺎﻟﺔ ﺇﺧﺒﺎﺭﻳﺔ ﻳﺠﺐ‬
‫ﺃﻥﻳﺴﺘﺨﺪﻡ ﺍﻷﺳﻠﻮﺏ ‪.POST‬‬

‫• ﻻﺣﻆ ﺃﻥ ﺍﻟﻤﺼﻔﻮﻓﺘﻴﻦ ‪ POST_$‬ﻭ‪ GET_$‬ﻫﻤﺎ ﻣﺘﻐﻴﺮﺍﺕ ﻋﺎﻟﻤﻴﺔ ﻓﺎﺉﻘﺔ‪.‬‬


‫ﻭﻫﺬﺍﻳﻌﻨﻲ ﺃﻧﻪ ﻳﻤﻜﻨﻚ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‪.‬‬

‫‪14‬‬
‫ﺍﻟﺘﻌﺎﻣﻞﻣﻊ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﺃﻫﻢ ﺷﻲء ﻣﻔﻘﻮﺩ ﻭﻫﻮ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﺼﺤﺔ‪.‬‬

‫• ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻟﺼﺤﺔ ﻳﺤﻤﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺎﺹ ﺑﻚ ﻣﻦ‬


‫ﺍﻟﺘﻌﻠﻴﻤﺎﺕﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻀﺎﺭﺓ‪.‬‬

‫• ﺍﻷﻣﻦ ﻣﺼﻄﻠﺢ ﻣﻬﻢ ﺟﺪﺍ‪ً.‬‬

‫‪15‬‬
‫ﺍﻟﺘﺤﻘﻖﻣﻦ ﺻﺤﺔ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﻳﻌﺪ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﻨﻤﻮﺫﺝ ﺃﻣﺮﺍً ﻣﻬﻤﺎً ﻟﺤﻤﺎﻳﺔ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺨﺎﺹ‬


‫ﺑﻚﻣﻦ ﺍﻟﻤﺘﺴﻠﻠﻴﻦ ﻭﻣﺮﺳﻠﻲ ﺍﻟﺒﺮﻳﺪ ﺍﻟﻌﺸﻮﺍﺉﻲ‪.‬‬

‫• ﺗﻌﺮﺽ ﺻﻔﺤﺔ ‪ form.php‬ﺑﻴﺎﻧﺎﺕ ﺍﻟﻨﻤﻮﺫﺝ ﻣﺒﺎﺷﺮﺓ‪ .‬ﺇﺫﺍ‬


‫ﻗﺎﻡﺍﻟﻤﺘﺴﻠﻠﻮﻥ ﺍﻟﺨﺒﻴﺜﻮﻥ ﺑﺈﺩﺧﺎﻝ ﺑﻴﺎﻧﺎﺕ ﺳﻴﺉﺔ ﻋﻦ ﻋﻤﺪ‪،‬‬
‫ﻓﻠﻦﺗﻌﻤﻞ ﺍﻟﺼﻔﺤﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ‬

‫• ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﺗﻢ ﺇﺩﺧﺎﻝ ﻛﻮﺩ ‪ JavaScript‬ﺍﻟﺘﺎﻟﻲ‬


‫ﻓﻲﺣﻘﻞ ﺍﻻﺳﻢ ﻭﺗﻢ ﺇﺭﺳﺎﻝ ﺍﻟﻨﻤﻮﺫﺝ‬

‫<‪;>/script‬ﺗﻨﺒﻴﻪ)'ﻣﺮﺣﺒﺎ'(<‪– >script‬‬

‫‪16‬‬
‫ﺍﻟﺘﺤﻘﻖﻣﻦ ﺻﺤﺔ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﺗﺨﻴﻞ ﺃﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻻ ﻳﻌﺮﺽ ﺗﻨﺒﻴﻬﺎً ﻓﺤﺴﺐ‪ ،‬ﺑﻞ‬


‫ﻳﻘﻮﻡﺑﺘﺤﻤﻴﻞ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻀﺎﺭﺓ ﻣﻦ ﺧﺎﺩﻡ‬
‫ﺁﺧﺮﺇﻟﻰ ﻣﺘﺼﻔﺢ ﺍﻟﻮﻳﺐ ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺣﻴﺚ‬
‫ﻳﻜﻮﻥﺍﻟﺨﻄﺮ ﺃﻋﻠﻰ‪ .‬ﻳﺴُﻤﻰ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻮﻡ ﺑﻬﺠﻮﻡ‬
‫ﺍﻟﺒﺮﻣﺠﺔﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ )‪.(XSS‬‬

‫‪17‬‬
‫ﺍﻟﺘﺤﻘﻖﻣﻦ ﺻﺤﺔ ﺍﻟﻨﻤﻮﺫﺝ‬

‫• ﻗﺒﻞ ﻋﺮﺽ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺻﻔﺤﺔ ﻭﻳﺐ‪،‬‬


‫ﻳﺠﺐﻋﻠﻴﻚ ﺩﺍﺉﻤﺎً ﺍﻟﻬﺮﻭﺏ ﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ‪.‬‬
‫– ﺃﺗﺶ ﺗﻲ ﺃﻡ ﺃﻝ ‪()Specialchars‬‬

‫ﺇﺫﺍ)(['‪} (isset)$_POST]'name'[, $_POST]'email‬‬


‫;"‪ $email.‬ﻳﺮﺟﻰ ﺗﺄﻛﻴﺪ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ" ‪>br<"; echo‬‬
‫‪.‬ﻋﻠﻰﺍﺷﺘﺮﺍﻛﻚ ‪ $name‬ﺷﻜﺮﺍً" ‪$_POST]'email'[(; echo‬‬
‫)‪$_POST]'name'[(; $email = htmlspecialchars‬‬
‫)‪$name = htmlspecialchars‬‬
‫{ ﺁﺧﺮ }‬
‫{;"‪.‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺗﻘﺪﻳﻢ ﺍﺳﻤﻚ ﻭﻋﻨﻮﺍﻥ ﺑﺮﻳﺪﻙ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ"‬
‫‪18‬‬ ‫‪echo‬‬
‫ﺗﺮﻣﻴﺰ‪URL‬‬

‫‪19‬‬
‫ﺃﺗﺶﺗﻲ ﺃﻡ ﺃﻝ ‪()Specialchars‬‬

‫• ﺗﻘﻮﻡ ﺍﻟﺪﺍﻟﺔ ‪ ()htmlspecialchars‬ﺑﺘﺤﻮﻳﻞ ﺍﻷﺣﺮﻑ‬


‫ﺍﻟﺨﺎﺻﺔﺇﻟﻰ ﻛﻴﺎﻧﺎﺕ ‪ .HTML‬ﻭﻫﺬﺍ ﻳﻌﻨﻲ ﺃﻧﻪ ﺳﻴﺘﻢ‬
‫ﺍﺳﺘﺒﺪﺍﻝﺃﺣﺮﻑ ‪ HTHT‬ﻣﺜﻞ > ﻭ < ﺑـ > ﻭ <‪ .‬ﻳﻤﻨﻊ ﻫﺬﺍ‬
‫ﺍﻟﻤﻬﺎﺟﻤﻴﻦﻣﻦ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻋﻦ‬
‫ﻃﺮﻳﻖﺇﺩﺧﺎﻝ ﺗﻌﻠﻴﻤﺎﺕ ﺑﺮﻣﺠﻴﺔ ﺑﺘﻨﺴﻴﻖ ‪ HTML‬ﺃﻭ‬
‫‪) Javascript‬ﻫﺠﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ(‬
‫ﻓﻲﺍﻟﻨﻤﺎﺫﺝ‪.‬‬

‫‪20‬‬
()Specialchars ‫ﺃﺗﺶﺗﻲ ﺃﻡ ﺃﻝ‬

• http://www.example.com/test_form.php/
‫('ﺍﺧﺘﺮﺍﻕ‬%3C/ script%3E
%22%3E%3Cscript%3Ealert)'
:‫ ﻫﺬﺍ ﺑﻮﺍﺳﻄﺔ ﺍﻟﺨﺎﺩﻡ ﻣﻦ ﺃﺟﻞ‬URL ‫• ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬ ﻋﻨﻮﺍﻥ‬
• >script<('‫>ﺗﻨﺒﻴﻪ)'ﺍﺧﺘﺮﺍﻕ‬/script<

()htmlspecialchars ‫• ﺑﻮﺍﺳﻄﺔ ﻭﻇﻴﻔﺔ‬


/"<>script<alert)'hacked'(> /script<"<
>formmethod="post" action="test_form.php

21
‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﻌﺎﻟﻤﻴﺔ ﺍﻟﻔﺎﺉﻘﺔ ‪PHP‬‬

‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﻌﺎﻟﻤﻴﺔ‬

‫‪22‬‬
‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﻌﺎﻟﻤﻴﺔ‬
‫‪.‬ﻋﺒﺎﺭﺓﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺘﻐﻴﺮﺍﺕ‬
‫ﺍﻟﻌﻤﻮﻣﻴﺎﺕ‪• GLOBALS‬‬

‫• ﺗﻢ ﺗﻘﺪﻳﻤﻪ ﻓﻲ ‪ ،PHP 4.1.0‬ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﻣﺘﻐﻴﺮﺍﺕ‬


‫ﻣﻀﻤﻨﺔﻣﺘﺎﺣﺔ ﺩﺍﺉﻤﺎً ﻓﻲ ﺟﻤﻴﻊ ﺍﻟﻨﻄﺎﻗﺎﺕ‪.‬‬

‫• ﻭﻫﺬﺍ ﻳﻌﻨﻲ ﺑﺒﺴﺎﻃﺔ ﺃﻧﻪ ﻣﺘﻮﻓﺮ ﻓﻲ ﻛﺎﻓﺔ ﺍﻟﻨﻄﺎﻗﺎﺕ ﻋﺒﺮ‬


‫ﺍﻟﺒﺮﻧﺎﻣﺞﺍﻟﻨﺼﻲ‪.‬‬

‫• ﻟﻴﺴﺖ ﻫﻨﺎﻙ ﺣﺎﺟﺔ ﻟﻠﻘﻴﺎﻡ ﺑﻪﻋﺎﻟﻤﻲﻣﺘﻐﻴﺮ ‪$‬؛ ﻟﻠﻮﺻﻮﻝ‬


‫ﺇﻟﻴﻪﺿﻤﻦ ﺍﻟﻮﻇﺎﺉﻒ ﺃﻭ ﺍﻷﺳﺎﻟﻴﺐ‪.‬‬

‫‪23‬‬
‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕﺍﻟﻌﺎﻟﻤﻴﺔ‬
‫• ﻣﺘﻐﻴﺮﺍﺕ ‪ PHP‬ﺍﻟﻔﺎﺉﻘﺔ ﺍﻟﻌﺎﻟﻤﻴﺔ ﻫﻲ‪:‬‬
‫– ‪$‬ﺍﻟﻌﺎﻟﻤﻴﺎﺕ‬
‫– ‪_$‬ﺍﻟﺨﺎﺩﻡ‬
‫‪–$_POST‬‬
‫‪– $_GET‬‬
‫– ‪_$‬ﻛﻮﻛﻲ‬
‫‪– $_SESSION‬‬

‫‪24‬‬
‫‪$‬ﺍﻟﻌﺎﻟﻤﻴﺎﺕ‬
‫‪.‬ﺍﻟﻨﺼﻲ‪ PHP‬ﻳﺴُﺘﺨﺪﻡ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻌﺎﻣﺔ‬
‫ﻣﻦﺃﻱ ﻣﻜﺎﻥ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ‪ PHP‬ﻫﻮ ﻣﺘﻐﻴﺮ ﻋﺎﻟﻤﻲ‬
‫ﻓﺎﺉﻖ‪• $GLOBALS‬‬

‫• ﻳﻘﻮﻡ ‪ PHP‬ﺑﺘﺨﺰﻳﻦ ﻛﺎﻓﺔ ﺍﻟﻤﺘﻐﻴﺮﺍﺕ ﺍﻟﻌﺎﻣﺔ ﻓﻲ‬


‫ﻣﺼﻔﻮﻓﺔﺗﺴﻤﻰ ‪ .GLOBALS]index[$‬ﻳﺤﻤﻞ‬
‫ﺍﻟﻔﻬﺮﺱﺍﺳﻢ ﺍﻟﻤﺘﻐﻴﺮ‪.‬‬

‫‪25‬‬
‫‪>?php‬‬
‫‪$‬ﺱ = ‪75‬؛‬
‫‪ $‬ﺹ = ‪25‬؛‬

‫ﺇﺿﺎﻓﺔﻭﻇﻴﻔﺔ )( }‬
‫‪$‬ﺍﻟﻌﻮﻟﻤﺎﺕ]'ﺽ'[ = ‪$‬ﺍﻟﻌﻮﻟﻤﺎﺕ]'ﺱ'[ ‪$ +‬ﺍﻟﻌﻮﻟﻤﺎﺕ]"ﺹ"[؛‬
‫{‬

‫ﺇﺿﺎﻓﺔ)(؛‬
‫ﺻﺪﻯ‪;z$‬‬
‫?<‬

‫ﺍﻟﻤﺨﺮﺟﺎﺕ‪100:‬‬

‫‪26‬‬
‫‪$_SERVER‬‬
‫‪.‬ﻋﺒﺎﺭﺓﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﻣﺜﻞ ﺍﻟﺮﺅﻭﺱ ﻭﺍﻟﻤﺴﺎﺭﺍﺕ‬
‫ﻭﻣﻮﺍﻗﻊﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ‪• $_SERVER‬‬

‫• ﻳﺤﺘﻮﻱ ‪ SERVER_$‬ﻋﻠﻰ ﻛﺎﻓﺔ ﻣﺘﻐﻴﺮﺍﺕ ﺍﻟﺒﻴﺉﺔ‪.‬‬

‫• ﺑﻌﺾ ﻋﻨﺎﺻﺮ ‪:SERVER_$‬‬


‫'‪– 'PHP_SELF‬‬
‫• ﺍﺳﻢ ﺍﻟﻤﻠﻒ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻩ ﺣﺎﻟﻴﺎً‪ ،‬ﺑﺎﻟﻨﺴﺒﺔ ﺇﻟﻰ ﺟﺬﺭ‬
‫ﺍﻟﻤﺴﺘﻨﺪ‪.‬‬
‫• ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ http://example.com/foo/bar.php :‬ﺳﻴﻜﻮﻥ ‪.foo/bar/‬‬
‫• ﻻ ﻳﻤﻜﻦ ﺍﻟﻮﺛﻮﻕ ﺑـ ‪ SERVER]'PHP_SELF'[_$‬ﻷﻧﻪ ﻣﻌﺮﺽ ﻟﻬﺠﻤﺎﺕ ‪.XSS‬‬

‫"‪– "SERVER_ADDR‬‬
‫• ﻋﻨﻮﺍﻥ ‪ IP‬ﺍﻟﺨﺎﺹ ﺑﺎﻟﺨﺎﺩﻡ ﺍﻟﺬﻱ ﻳﺘﻢ ﻣﻦ ﺧﻼﻟﻪ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺤﺎﻟﻲ‪.‬‬

‫‪27‬‬
‫‪$_SERVER‬‬
‫• 'ﺍﺳﻢ ﺍﻟﺨﺎﺩﻡ'‬
‫– ﺍﺳﻢ ﻣﻀﻴﻒ ﺍﻟﺨﺎﺩﻡ ﺍﻟﺬﻱ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‬
‫ﺍﻟﺤﺎﻟﻲﺗﺤﺘﻪ‪.‬‬

‫"‪• "SERVER_PROTOCOL‬‬
‫– ﺍﺳﻢ ﻭﻣﺮﺍﺟﻌﺔ ﺑﺮﻭﺗﻮﻛﻮﻝ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺬﻱ ﺗﻢ ﻃﻠﺐ‬
‫ﺍﻟﺼﻔﺤﺔﻣﻦ ﺧﻼﻟﻪ؛ ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ "‪"HTTP/1.0‬؛‬

‫"‪• "REQUEST_METHOD‬‬
‫– ﻃﺮﻳﻘﺔ ﺍﻟﻄﻠﺐ ﺍﻟﺘﻲ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ؛ ﻋﻠﻰ ﺳﺒﻴﻞ‬
‫ﺍﻟﻤﺜﺎﻝ‪"،‬ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ"‪" ،‬ﺍﻟﻨﺸﺮ"‪.‬‬

‫‪28‬‬
‫‪$_SERVER‬‬
‫"‪• "HTTP_REFERER‬‬
‫– ﻋﻨﻮﺍﻥ ﺍﻟﺼﻔﺤﺔ )ﺇﻥ ﻭﺟﺪﺕ( ﺍﻟﺘﻲ ﺃﺣﺎﻟﺖ ﻭﻛﻴﻞ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺤﺎﻟﻴﺔ‪.‬‬
‫"‪• "SCRIPT_NAME‬‬
‫‪-‬ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺴﺎﺭ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺤﺎﻟﻲ‪.‬‬

‫ﻟﺴﺮﺩﺟﻤﻴﻊ ﻣﻌﻠﻤﺎﺕ ‪ ،SERVER_$‬ﻣﺎ ﻋﻠﻴﻚ ﺳﻮﻯ ﺍﻟﻘﻴﺎﻡ ﺑﻤﺎ ﻳﻠﻲ‬


‫‪foreach )$_SERVER as $parm =< $value( :‬‬
‫ﺻﺪﻯ"‪;"parm = '$value'\n$‬‬
‫‪29‬‬
30
31
‫ﺍﻟﻤﺮﺟﻊ‬

/manual/en/reserved. ‫ﺍﻟﺨﺎﺩﻡ‬.‫ﺍﻟﻤﺘﻐﻴﺮﺍﺕ‬.php
• https://www.php.net

/php/ php_superglobals.asp
• https://www.w3schools.com

32
‫ﺃﻱﺃﺳﺉﻠﺔ؟‬

‫‪33‬‬

You might also like