ÑÞÕÃ’ëÕ àÞÑÞâë:
ÑÞÕÃ’ëÕ àÞÑÞâë:
ÑÞÕÃ’ëÕ àÞÑÞâë:
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Êîäèíã<br />
PHP: ÎÑÍÎÂÛ ÎÑÍÎÂ<br />
Íèêèòà «Nikitos» Êèñëèöèí<br />
(nikitoz@realxakepru)<br />
Äàâàé ðàññìîòðèì âçàèìîäåéñòâèå âåá-ñåðâåðà è êëèåíòà â òðèâèàëüíîì<br />
ñëó÷àå - ïðè èñïîëüçîâàíèè ñòàòè÷íîãî html’à Êëèåíò, íàïðèìåð IE, îòïðàâëÿåò<br />
ñåðâåðó çàïðîñ Òîò, ÷èòàÿ åãî, âûïîëíÿåò íåêîòîðóþ îïåðàöèþ - â<br />
ðàññìàòðèâàåìîì ñëó÷àå òóïî ÷èòàåò çàêà÷àííûé ðàíåå ôàéë è ïåðåäàåò åãî<br />
ñîäåðæèìîå áðàóçåðó Âñå ýòî, êîíå÷íî, çäîðîâî, íî âîò ïðîáëåìêà - î÷åíü óæ<br />
ãåìîðíî ðó÷êàìè ïðàâèòü õòìë-ôàéëû, ÷òîáû îáíîâèòü ñàéò - îñîáåííî åñëè<br />
ñàéòîâ ýòèõ ìíîãî Äëÿ ðåøåíèÿ èìåííî ýòîé ïðîáëåìû áûë ðàçðàáîòàí â 1994<br />
ãîäó ÿçûê PHP - çàìå÷àòåëüíàÿ òåõíîëîãèÿ, âïîñëåäñòâèè èçáàâèâøàÿ webðàçðàáîò÷èêîâ<br />
îò öåëîé êó÷è îäíîîáðàçíîé ìåõàíè÷åñêîé ðàáîòû<br />
Âåñü ñìàê ýòîé òåõíîëîãèè çàêëþ÷àåòñÿ â òîì, ÷òî êàê òàêîâîãî html-ôàéëà íà<br />
ñåðâåðå íåò, åñòü ëèøü íåêîòîðîå ïðàâèëî, ïî êîòîðîìó ôîðìèðóåòñÿ ïîòîê<br />
âûâîäà áðàóçåðó Ýòè ïðàâèëà è íàçûâàþòñÿ ñêðèïòàìè (script - «ñöåíàðèé»)<br />
Êîíöåïöèè PHPïðîãðàììèðîâàíèÿ<br />
PHP:<br />
îñíîâû îñíîâ<br />
«Ó òåáÿ åñòü ñàéò?» Êòî-òî, óñëûøàâ â ñâîé àäðåñ ïîäîáíûé âîïðîñ, îòâåòèò<br />
ñëîâàìè «íàôèã íàäî?» Êòî-òî äàñò ëèíê íà îäèíîêóþ html-ñòðàíèöó, íà<br />
êîòîðîé óæå íå ïåðâûé ãîä ïîñòèòñÿ óáîãîå «äîáðî ïîæàëîâàòü» È òîëüêî òû<br />
÷åðåç ïàðó ëåò ñìîæåøü ãîðäî ñêàçàòü: «ß ñîäåðæó âîñåìü íîâîñòíûõ<br />
ïîðòàëîâ ñóììàðíîé ïîñåùàåìîñòüþ ìèëëèîí ÷åëîâåê â ñóòêè» Êðóòî? ß<br />
òîæå òàê äóìàþ Íî html òóò òåáå íå ïîìîùíèê - ãëóïî äåëàòü ñàéò ñòàòè÷íûì,<br />
îáíîâëÿÿ åãî ïî ftp :) Ìû ïîéäåì áîëåå ïðîãðåññèâíûì ïóòåì<br />
Íèêèòà «Nikitos» Êèñëèöèí (nikitoz@realxakepru)<br />
PHP - èíòåðïðåòèðóåìûé ÿçûê, òå ñöåíàðèè òðàíñëèðóþòñÿ â ìàøèííûå êîäû<br />
êàæäûé ðàç ïðè èõ âûïîëíåíèè Ôàéëû ñ php-êîäîì ìîãóò, â çàâèñèìîñòè îò<br />
íàñòðîåê web-ñåðâåðà, èìåòü ðàçëè÷íûå ðàñøèðåíèÿ Íåêîòîðûå àäìèíû äàæå<br />
ïðàêòèêóþò äàâàòü php-ñêðèïòàì íåñâîéñòâåííûå ÿçûêó ðàñøèðåíèÿ òèïà «htnl»,<br />
«www» è òä - äåëàþò âñå, ÷òîáû äàòü áðàòó-õàêåðó êàê ìîæíî ìåíüøå<br />
èíôîðìàöèè î ñêðèïòå Íó, îíî è âåðíî, ÿ áû, ÷åñ ñëîâî, óâèäåâ ñêðèïò<br />
indexhtnl, íå ñðàçó áû äîãàäàëñÿ, íà êàêîì îí ÿçûêå íàïèñàí: òî ëè perl, òî ëè<br />
php, à ìîæåò è âîâñå python :) Íî îáû÷íî âñå æå ñêðèïòàì äàþòñÿ âïîëíå<br />
îïðåäåëåííûå ðàñøèðåíèÿ - php, php3/4, phtml è òï<br />
PHP ìîæåò áûòü óñòàíîâëåí ëèáî êàê ìîäóëü äëÿ web-ñåðâåðà, ëèáî - ýòî<br />
ïðàêòèêóåòñÿ ðåæå - â âèäå ñàìîñòîÿòåëüíîãî èíòåðïðåòàòîðà CGI (Common<br />
Gateway Interface) Ïðè èñïîëüçîâàíèè CGI âåðñèè âîçíèêàþò íåêîòîðûå íþàíñû<br />
ñ áåçîïàñíîñòüþ, íåñêîëüêî ñíèæàåòñÿ ñêîðîñòü âûïîëíåíèÿ ñöåíàðèÿ, íî åñòü<br />
è ïëþñ - ñóùåñòâóåò âîçìîæíîñòü ñîçäàâàòü php-ïðîöåññû ñ ïðàâàìè ðàçëè÷íûõ<br />
ïîëüçîâàòåëåé Ïðè èñïîëüçîâàíèè æå ìîäóëÿ âåáñåðâåðà âñå ïðîöåññû<br />
çàïóñêàþòñÿ ñ ïðàâàìè ñàìîãî âåáñåðâåðà - êàê ïðàâèëî, nobody<br />
PHP-êîä âñåãäà íà÷èíàåòñÿ ñî ñòðîêè Ñëåäóåò<br />
çàìåòèòü, ÷òî PHP-êîä ìîæíî âñòàâëÿòü â ïðîèçâîëüíîì ìåñòå html-äîêóìåíòà:<br />
êàê â ñàìîì åãî íà÷àëå, òàê è â ñåðåäèíå, â îáùåì, ãäå óãîäíî Êàê ñêàçàë êòîòî<br />
èç ðàçðàáîò÷èêîâ ÿçûêà: «PHP èñïîëüçóåòñÿ ëèøü òàì, ãäå îí äåéñòâèòåëüíî<br />
íåîáõîäèì» Ïðåäâèæó ãíåâ ïåðëîâùèêîâ è ïðîñòî íåäàëüíîâèäíûõ ëþäåé:<br />
«Ìåøàòü êîä ñ äèçàéíîì - òóïîñòü!» - âîñêëèêíóò îíè è áóäóò, êîíå÷íî æå, ïðàâû<br />
:) Íî âåäü äåëàòü ýòî òåáÿ íèêòî íå çàñòàâëÿåò - ýòî âñåãî ëèøü î÷åíü óäîáíàÿ<br />
äëÿ íåáîëüøèõ ñàéòîâ âîçìîæíîñòü Â php åñòü ôóíêöèÿ include(), êîòîðàÿ ïðè<br />
ãðàìîòíîì èñïîëüçîâàíèè ïîçâîëÿåò ñîçäàâàòü ñëîæíåéøèå ïî ñâîåé ñòðóêòóðå<br />
ïðîåêòû, íå ìåøàÿ õòìë-òåãè ñ ïõï-êîäîì Ê ýòîìó ìû åùå âåðíåìñÿ â áóäóùèõ<br />
ìàòåðèàëàõ<br />
Âî âñåõ ïîñëåäóþùèõ ïðèìåðàõ ÿ áóäó îðèåíòèðîâàòüñÿ íà ìîäóëüíóþ óñòàíîâêó<br />
PHP - èáî âñòðå÷àåòñÿ îíà â 9999% ñëó÷àÿõ Îäíàêî äàæå åñëè òû íàòêíóëñÿ íà<br />
ñåðâåð, ãäå php ñòîèò òîëüêî êàê CGI èíòåðïðåòàòîð, òåáå áóäåò äîñòàòî÷íî<br />
ïîìåíÿòü ïåðâóþ ñòðîêó ñöåíàðèÿ íà ÷òî-íèáóäü òèïà #!/usr/bin/php, è ñöåíàðèé<br />
çàðàáîòàåò<br />
À òåïåðü ïåðåéäåì ê ðàññìîòðåíèþ îñíîâíûõ ôóíêöèé PHP<br />
Îñíîâíûå ôóíêöèè<br />
 ñòàðûõ âåðñèÿõ php ïåðåäàííûå ñêðèïòó ïåðåìåííûå èç html-ôîðìû (êàê<br />
âàðèàíò - ÷åðåç url) äîñòóïíû â ñöåíàðèè ñ èìåíàìè, êîòîðûå èìåëè<br />
ñîîòâåòñòâóþùèå ïîëÿ â ôîðìå Òå åñëè áûëî ïîëå name, òî îáðàòèòüñÿ ê<br />
ââåäåííûì â íåãî äàííûì ìîæíî ÷åðåç ïåðåìåííóþ $name  áîëåå ïîçäíèõ<br />
âåðñèÿõ, íà÷èíàÿ ñ 41, ñèòóàöèÿ íåñêîëüêî èçìåíèëàñü  äåôîëòíîé íàñòðîéêå<br />
PHP òåïåðü íå íàçíà÷àåò àâòîìàòè÷åñêè ïåðåìåííûå êàæäîìó èç ïîëó÷åííûõ<br />
ïîëåé, à ïîìåùàåò âñå ïîëó÷åííûå äàííûå â àññîöèàòèâíûå ìàññèâû:<br />
$_GET - ñîäåðæèò äàííûå, ïîëó÷åííûå ìåòîäîì GET<br />
$_POST - ñîäåðæèò äàííûå, ïîëó÷åííûå ìåòîäîì POST<br />
$_COOKIE - ñîäåðæèò äàííûå èç cookies<br />
$_REQUEST - ñîäåðæèò äàííûå, ïîëó÷åííûå èç âñåõ âîçìîæíûõ èñòî÷íèêîâ -<br />
GET, POST è cookies<br />
Ñëåäóåò, âèäèìî, ïîÿñíèòü, ÷òî ìàññèâ - ýòî, â îáùåì ñëó÷àå, ìíîæåñòâî<br />
íåêîòîðûõ ýëåìåíòîâ, êàæäûé èç êîòîðûõ èìååò ñâîé ñîáñòâåííûé óíèêàëüíûé<br />
èäåíòèôèêàòîð Âèçóàëüíî ìàññèâ ìîæíî ïðåäñòàâèòü ñåáå â âèäå øêàôà ñ<br />
êó÷åé ÿùè÷êîâ, íà äâåðöå êàæäîãî èç êîòîðûõ íàïèñàí íîìåð Îáðàòèòüñÿ ê<br />
ñîäåðæèìîìó êàêîé-òî ÿ÷åéêè ìîæíî, çíàÿ íîìåð äâåðöû è íàçâàíèå øêàôà<br />
Ïðåäïîëîæèì, ñóùåñòâóåò íåêèé ìàññèâ $array Òîãäà ññûëàòüñÿ íà åãî<br />
ýëåìåíòû ìîæíî ïóòåì óêàçàíèÿ èäåíòèôèêàòîðà ýëåìåíòà â êâàäðàòíûõ<br />
ñêîáêàõ, ó÷èòûâàÿ, ÷òî íóìåðàöèÿ ýëåìåíòîâ íà÷èíàåòñÿ ñ íóëÿ, òå íà ïåðâûé<br />
ýëåìåíò óêàæåò ïåðåìåííàÿ $array[0], íà âòîðîé - $array[1] Ñóùåñòâóþò òàêæå<br />
àññîöèàòèâíûå ìàññèâû, èäåíòèôèêàòîðîì ýëåìåíòîâ êîòîðûõ âûñòóïàåò íå<br />
öèôðà, à êàêîå-òî ñëîâî â àëôàâèòå [a-zA-Z0-9] Òåïåðü âåðíåìñÿ ê htmlôîðìàì<br />
Ïîñëå ïîëó÷åíèÿ íåêîòîðûõ äàííûõ ñðàçó ñîçäàåòñÿ ìàññèâ<br />
$_REQUEST, ýëåìåíòàìè êîòîðîãî ñëóæàò ââåäåííûå ïîëüçîâàòåëåì äàííûå<br />
Îáðàùàòüñÿ ê íèì ìîæíî, óêàçûâàÿ â êà÷åñòâå èäåíòèôèêàòîðîâ èìÿ<br />
ñîîòâåòñòâóþùåãî ïîëÿ â html-ôîðìå Íàïðèìåð, åñëè ïîëüçîâàòåëü îòïðàâèë<br />
ôîðìó ñ äâóìÿ ïîëÿìè: name è email, îáðàòèòüñÿ ê ñîäåðæèìîìó ýòèõ ïîëåé<br />
ìîæíî ÷åðåç ïåðåìåííûå $_REQUEST[name] è $_REQUEST[email]<br />
ñîîòâåòñòâåííî<br />
 PHP åñòü ÷åòûðå îñíîâíûõ òèïà äàííûõ: öåëîå ÷èñëî - integer, âåùåñòâåííîå<br />
÷èñëî - double, ñòðîêà - string è áóëåâñêèé òèï - boolean Ïîñëåäíèé, ïî<br />
îïðåäåëåíèþ, ìîæåò ïðèíèìàòü òîëüêî äâà ëîãè÷åñêèõ çíà÷åíèÿ TRUE èëè<br />
FALSE Òèï äàííûõ â áîëüøèíñòâå ñëó÷àåâ ÿâíî óêàçûâàòü íå òðåáóåòñÿ - îí<br />
îïðåäåëÿåòñÿ â çàâèñèìîñòè îò çíà÷åíèÿ ïåðåìåííîé Òàê, $a = 1 - ýòî öåëûé<br />
òèï, $a = 032 - âåùåñòâåííûé, à $a = «Hey, nigga» - ñòðîêîâîé Ê ñòðîêàì<br />
ïðèìåíèìû âñå îïåðàöèè, ïðèìåíèìûå ê öåëûì è äåéñòâèòåëüíûì ÷èñëàì Â<br />
PHP ìîæíî ñêëàäûâàòü, âû÷èòàòü, äåëèòü è óìíîæàòü ñòðîêó ñ äåéñòâèòåëüíûì<br />
÷èñëîì Íàïðèìåð, åñëè óìíîæèòü $b=»It is 5 o’clock» íà $c=2, òî ïîëó÷èòñÿ<br />
5*2=10<br />
Ìîæíî, íî î÷åíü ðåäêî íóæíî, ÿâíûì îáðàçîì óêàçàòü òèï äàííûõ ïåðåìåííîé:<br />
Ïóñòü áûëà ïåðåìåííàÿ $var=314 - äåéñòâèòåëüíî ÷èñëî<br />
$var=(int) $var - öåëîå ÷èñëî, ðàâíîå òðåì<br />
$var=(string) $var - óæå ñòðîêà «3»<br />
Ôóíêöèÿ isset($var) ïîçâîëÿåò ïðîâåðèòü, ïðèñâîåíî ëè ïåðåìåííîé $var êàêîåëèáî<br />
çíà÷åíèå Åñëè ïðèñâîåíî, òî ôóíêöèÿ âîçâðàùàåò ëîãè÷åñêîå TRUE, â<br />
ïðîòèâíîì ñëó÷àå - FALSE<br />
 PHP åñòü óñëîâíûé îïåðàòîð IF, ïîçâîëÿþùèé âûïîëíÿòü ðàçëè÷íûå áëîêè<br />
êîäà â çàâèñèìîñòè îò íåêîòîðûõ óñëîâèé IF âû÷èñëÿåò áóëåâñêîå çíà÷åíèå<br />
90