Îðèãèíàë ñîîáùåíèÿÊîììåíòàðèè: 
Ââåäåíèå â PHP
“CHIP / Ðîññèÿ”
Êàê è ëþáóþ âåùü â ýòîì ìèðå, ñàéò ìîæíî àâòîìàòèçèðîâàòü. È íå ïðîñòî àâòîìàòèçèðîâàòü, à äàòü ñàìîìó ñåáå âîçìîæíîñòü, áîëüøå íèêîãäà íå çàãëÿäûâàòü â åãî FTP-íåäðû, è ëèøèòü ïðîöåññ àäìèíèñòðèðîâàíèÿ âåá-ñàéòà áîëüøèíñòâà çàòðà÷èâàåìûõ ôèçè÷åñêèõ óñèëèé. ßçûê PHP â äàåò, ïðîñòî, îãðîìíûå âîçìîæíîñòè ïî ñîçäàíèþ “äâèæêà” äëÿ âåá-ñàéòà, è ïðè ýòîì, åãî ñèíòàêñèñ î÷åíü ïðîñò. Âïðî÷åì, îáî âñåì ïî ïîðÿäêó.
×òî, ñîáñòâåííî, òðåáóåòñÿ äëÿ ñîçäàíèÿ õîðîøåé ñèñòåìû àäìèíèñòðèðîâàíèÿ âåá-ñàéòà? Ñîâñåì íåìíîãî – ñåðâåð, êîòîðûé áû ðàçðåøàë èñïîëüçîâàíèå PHP-ñêðèïòîâ, è çíàíèå ñàìîãî ÿçûêà PHP, íà êîòîðîì ìû è áóäåì ïèñàòü “èíôîðìàöèîííûé äâèãàòåëü”.
Òàê æå, æåëàòåëüíî èìåòü â ñâîåì ðàñïîðÿæåíèè ñåðâåð Apache (http://apache.org), è èíòåðïðåòàòîð PHP (http://www.php.org) - è òî è äðóãîå, ðàñïðîñòðàíÿåòñÿ ñîâåðøåííî áåñïëàòíî, è ñâîáîäíî äîñòóïíî äëÿ çàãðóçêè èç ñåòè.
Èòàê, íà÷íåì?
Ââåäåíèå â PHP
Ñàì ÿçûê ïðîãðàììèðîâàíèÿ PHP, áåç èíòåðíåòà ñóùåñòâîâàòü íå ìîæåò. Îí ïîïðîñòó íå íóæåí íà îáû÷íîì êîìïüþòåðå – âòîðîé Windows íà íåì íå íàïèøåøü, è íè÷åãî âðàçóìèòåëüíîãî è ïîëåçíîãî – òîæå. Ðàçâå ÷òî, ÷àò äëÿ âíóòðåííåé ñåòè – ýòî äà. Íî çà òî â èíòåðíåòå, PHP ñ÷èòàåòñÿ îäíèì èç ñàìûõ ìîùíûõ ÿçûêîâ, êîòîðûé ñòîèò íà îäíîé ëèíåéêå, ñ òåì æå Perl’îì.
PHP ÿâëÿåòñÿ óäîáíûì, è â òî æå âðåìÿ äîñòàòî÷íî ïðîñòûì ÿçûêîì. È óæ åñëè âàì äîâîäèëîñü ïèñàòü ïðîãðàììû íà Ñ èëè C++, c èçó÷åíèåì PHP ó âàñ è âîâñå íå âîçíèêíåò òðóäíîñòåé, òàê êàê ñèíòàêñèñ î÷åíü ïîõîæ.
Ëþáàÿ (äàæå ñàìàÿ ìàëåíüêàÿ) ïðîãðàììà íà PHP, äîëæíà íà÷èíàòüñÿ ñ îïåðàòîðà
<?php
è çàêàí÷èâàòüñÿ îïåðàòîðîì
?>
Åñëè ýòè îïåðàòîðû íå áóäóò ïðîñòàâëåíû â íà÷àëå è êîíöå ïðîãðàììû, ñåðâåð êîòîðûé áóäåò îáðàáàòûâàòü çàïðîñû, íå ðàñïîçíàåò êîä.
 PHP, êàê è â ëþáîì äðóãîì ÿçûêå ïðîãðàììèðîâàíèÿ, ïðèñóòñòâóåò âîçìîæíîñòü âñòàâêè êîììåíòàðèåâ – áåç ýòîãî íèêàê. Êîììåíòàðèè ïîðîé âûðó÷àþò ñàìîãî æå ðàçðàáîò÷èêà, íå ãîâîðÿ óæå î ïîëüçîâàòåëÿõ, êîòîðûå âîçìîæíî, áóäóò êîíôèãóðèðîâàòü ãîòîâóþ ïðîãðàììó - îíè íå äàþò çàïóòàòüñÿ â ñòðóêòóðå ïðîãðàììíîãî êîäà, è äåëàþò åãî áîëåå ÷èòàåìûì. Òåêñò êîììåíòàðèåâ â ïðîãðàììàõ íà PHP ñóùåñòâóåò äâóõ âèäîâ – îäíîñòðî÷íûé, è ìíîãîñòðî÷íûé. Ñîîòâåòñòâåííî, ñóùåñòâóåò è äâà òèïà óêàçàíèÿ êîììåíòàðèåâ. Ïðèìåð:
/* ìíîãîñòðî÷íûé
êîììåíòàðèé */
è
// îäíîñòðî÷íûé êîììåíòàðèé
 êîììåíòàðèÿõ ìîæåò íàõîäèòüñÿ ëþáîé òåêñò, áóäü òî äàæå êîä PHP, èëè “êèòàéñêèå êîëû”.  ëþáîì ñëó÷àå – ñåðâåð ïðè îáðàáîòêå ïðîãðàììû îïóñêàåò âñå ñòðîêè, ÷òî îòäåëåíû ñèìâîëàìè êîììåíòàðèåâ.
Ïåðåìåííûå â ïðîãðàììàõ íà PHP, îòäåëÿþòñÿ ñèìâîëàìè $. Íàïðèìåð, â ïðîãðàììå:
$name = “Ìèð”;
ïåðåìåííàÿ $name áóäåò ðàâíà çíà÷åíèþ Ìèð. À âûâåñòè çíà÷åíèå ïåðåìåííîé íà ýêðàí ìîæíî äâóìÿ ñïîñîáàìè:
echo $name;
è
print $name;
Íó, à êîä ïðîãðàììû, êîòîðàÿ âûâîäèëà áû ÷òî-íèáóäü, âðîäå “Ïðèâåò Ìèð!”, áóäåò âûãëÿäåòü âîò òàê:
$hello = “Ïðèâåò”;
$spacer = ” “;
$name = “Ìèð”;
$din = “!”;
echo $hello;
echo $spacer;
echo $name;
echo $din;
Ïðè÷åì, êàê âû, íàâåðíîå, óæå äîãàäàëèñü, èìåíà ïåðåìåííûõ âåùü ñîâåðøåííî íå ïîä÷èíåííàÿ ëîãèêå – íàïðèìåð, èìÿ ïåðåìåííîé $din ñîâåðøåííî íå ñîîòâåòñòâóåò åå çíà÷åíèþ. Ãëàâíîå, íå ïåðåïóòàòü èìåíà ïåðåìåííûõ ïðè ïîñòðîåíèè ïðîãðàììû.
Îñíîâíûìè ýëåìåíòàìè ëþáîé ïðîãðàììû, ÿâëÿþòñÿ ïåðåìåííûå. Èõ èíîãäà áûâàåò äàæå áîëüøå ÷åì èñïîëíÿåìîãî êîäà ïðîãðàììû. À êîãäà äåëàåòñÿ î÷åíü áîëüøîé ñêðèïò, êîòîðûé ñîäåðæèò áîëüøîå êîëè÷åñòâî ôàéëîâ, ÷àñòî ïðèõîäèòñÿ èñïîëüçîâàòü îäíó è òó æå ïåðåìåííóþ â êàæäîì ôàéëå. À åñëè çíà÷åíèå ýòîé ïåðåìåííîé âäðóã ïîíàäîáèòñÿ èçìåíèòü, òîãäà ïðèäåòñÿ ïåðåëîïà÷èâàòü êàæäûé ôàéë, ðåäàêòèðóÿ åãî? Íåïëîõî áûëî áû, åñëè áû ìîæíî áûëî âûâåñòè âñå ïåðåìåííûå â îäèí êîíôèãóðàöèîííûé ôàéë, íå òàê ëè? Òàê è ñäåëàåì. Íà ïðèìåðå íàøåé ïðîãðàììû, âûíåñåì âñå ïåðåìåííûå â ôàéë configuration.php3. À â òåêóùåì ôàéëå, îñòàâèì òîëüêî ïðîãðàììó, êîòîðàÿ òåïåðü ïðåâðàòèòñÿ â âîò òàêîé êîä:
require(“configuration.php3”);
echo $hello;
echo $spacer;
echo $name;
echo $din;
Òåïåðü íàøà ïðîãðàììà èùåò â ñàìîé ñåáå çàïðàøèâàåìûå ïåðåìåííûå, à åñëè òàêîâûõ íàéäåíî íå áóäåò, îíà îòïðàâèòñÿ â ïóòåøåñòâèå íà óêàçàííûé â ïåðâîé ñòðî÷êå ôàéë.
Íî ãëàâíûì ïðåèìóùåñòâîì PHP, ÿâëÿåòñÿ âîçìîæíîñòè âñòàâêè êîäà â web-ñòðàíèöó, íàðÿäó ñî ñòàíäàðòíûì HTML-êîäîì. Ýòî äåëàåò ÿçûê PHP î÷åíü ãèáêèì, è â òî æå âðåìÿ íåîáû÷àéíî óäîáíûì.  ýòîì, îí ìîæåò ñîïåðíè÷àòü ðàçâå ÷òî ñ òåõíîëîãèåé ASP (Active Server Pages), íî îíà, â îòëè÷èè îò ðàññìàòðèâàåìîãî ÿçûêà, ìîæåò èñïîëüçîâàòüñÿ òîëüêî íà ñåðâåðàõ, áàçèðóþùèõñÿ íà îñíîâå Windows NT.
Ïåðâûé äâèæîê
Òåïåðü âû óæå èìååòå ïðåäñòàâëåíèå î PHP, è ìîæíî ñäåëàòü ÷òî-òî áîëåå ïîëåçíîå, íåæåëè ïðîãðàììó, êîòîðàÿ âûâîäèò áàíàëüíîå “Ïðèâåò Ìèð!”. Çàéìåìñÿ ðàçðàáîòêîé íàøåãî äâèæêà.
Äëÿ íà÷àëà, íàïèøåì ïðîãðàììó, êîòîðàÿ áóäåò äîáàâëÿòü íåêîòîðûå ñòàòüè â áàçó òåêñòîâ, è âûâîäèòü ëþáîé èç óêàçàííûõ ôàéëîâ â îäíîì øàáëîíå. Âñå ýòî âûãëÿäèò î÷åíü ñëîæíûì, íî íà ñàìîì äåëå î÷åíü ïðîñòî. Ñíà÷àëà íàïèøåì íà HTML ôîðìó, îòêóäà ââåäåííûå äàííûå áóäóò ïåðåäàâàòüñÿ ïðîãðàììå íà îáðàáîòêó:
<form method=”POST” action=”add_text.php3″>
<p>Íàçâàíèå òåêñòà:<br>
<input type=”text” name=”text_name” size=”20″><br>
Òåêñò:<br>
<textarea rows=”12″ name=”text” cols=”53″></textarea><br>
<input type=”submit” value=”Submit” name=”Submit”></p>
</form>
Òåïåðü íàïèøåì ïðîãðàììó, êîòîðàÿ ââåäåííûå â ôîðìó äàííûå îáðàáîòàåò äîëæíûì îáðàçîì, è ñîõðàíèò â ïàïêó texts:
<?php
$filename = “$name”; /* óêàçûâàåì ñ êàêèì èìåíåì áóäåò ñîõðàíåí ôàéë. Èìåíåì ôàéëà, áóäåò ñëóæèòü íàçâàíèå òåêñòà, ââåäåííîå â ñîîòâåòñòâóþùåå ïîëå ôîðìû */
$fp = fopen(”texts/$text_name.txt”,”w+”) /* îòêðûâàåì ôàéë, à åñëè îí íå íàéäåí, äèðåêòèâîé “w+” óêàçûâàåì ÷òî åãî íàäî ñîçäàòü */
fputs($fp, “<b>$text_name</b><br>$text”); /* ñîõðàíÿåì ñ ó÷åòîì HTML-ôîðìàòèðîâàíèÿ òåêñò â áàçó òåêñòîâ */
fclose($fp); /* çàêðûâàåì ôàéë ïî çàâåðøåíèþ âñåõ ðàáîò */
?>
Âîò è âñå – ýòà ïðîãðàììà ñîõðàíèò âñå ââåäåííûå â ôîðìó äàííûå. Òåïåðü íàì íóæíî èõ âûâåñòè. Çäåñü íà ïîìîùü òîæå ïðèõîäèò PHP. Çà÷åì æå íàì ñîçäàâàòü îãðîìíîå êîëè÷åñòâî âåá-ñòðàíèö, äëÿ êàæäîãî äîêóìåíòà õðàíÿùåãîñÿ â áàçå òåêñòîâ, åñëè ëþáîé èç íèõ ìîæíî âûâåñòè â îäíîì øàáëîíå?
Ñîçäàåì HTML-ôàéë, è â ìåñòå, ãäå ïðåäïîëàãàåòñÿ âûâîä òåêñòîâ, ïèøåì ñëåäóþùèé PHP-êîä:
<?
$filename = “read/”.$open .’.txt’; // îòêðûâàåì óêàçàííûé òåêñò
if (file_exists ($filename)): // åñëè òàêîé ôàéë ñóùåñòâóåò…
$fd = fopen ($filename, “r”); // …îòêðûâàåì åãî…
$showtext = fread ($fd, filesize ($filename)); // è ñ÷èòûâàåì â ïåðåìåííóþ $showtext
fclose ($fd); // çàêðûâàåì ôàéë
echo ($content); // âûâîäèì òåêñò åñëè ôàéë íàéäåí, à åñëè íåò…
else: echo (”Óêàçàííûé òåêñò îòñóòñòâóåò â áàçå òåêñòîâ.”); // ïèøåì ÷òî òàêîãî ôàéëà íåòó
endif; // êîíåö öèêëà, è êîíåö ïðîãðàììû
?>
Âñå òàê – ïîäóìàåò ÷èòàòåëü – íî êàê æå óêàçàòü ôàéë? Î÷åíü ïðîñòî. Ïðåäïîëîæèì, ÷òî ïðèâåäåííûé âûøå êîä, íàõîäèòñÿ â ôàéëå read.php3.  ñòðîêå áðîóçåðà, ïðîñòî ïèøåì read.php3?open=èìÿ_ôàéëà_áåç_ðàñøèðåíèÿ.
Äóìàþ, âðÿä ëè êòî-òî ñòàíåò ñïîðèòü, ÷òî òàêîé ñïîñîá î÷åíü óäîáåí. Èíòåðåñíî, ÷òî â ôàéëå ìîæåò õðàíèòüñÿ íå îáÿçàòåëüíî òåêñò – ýòî ìîæåò áûòü è HTML-êîä, è êàêîé-òî äðóãîé ñêðèïò… ñëîâîì, âñå, ÷òî òîëüêî ìîæåò ðàçîáðàòü áðîóçåð èëè ñåðâåð.
ß ñåé÷àñ íàõîæóñü  ãîðîäå
Ìîé íàñòðîé Õîðîøèé
ß ñëóøàþ LastFm.Ru
LIci WP - WordPress crossposting plugin