Ïåðâûé ñàéò íà PHP

           

ÔÀÉË NIZ.PHP

Êîä ýòîãî ôàéëà âûâîäèò èíôîðìàöèþ îá óæå âûñòàâëåííûõ îöåíêàõ - èõ êîëè÷åñòâî è ñðåäíèé áàëë, à òàêæå â òîì ñëó÷àå, åñëè ïîñåòèòåëü åùå íå âûñòàâëÿë ñâîþ îöåíêó - ôîðìó äëÿ åå ââîäà.

<?php

Ôàéëû ñî çíà÷åíèÿìè ñðåäíåãî áàëëà è êîëè÷åñòâà îöåíîê áóäóò õðàíèòüñÿ â ïàïêå ñ èìåíåì cnt. Çàïèøåì äëÿ óäîáñòâà åå èìÿ â ïåðåìåííóþ:

$dirct="cnt";

À ñàìè ýòè ôàéëû áóäóò èìåòü èìåíà, ñîñòàâëÿåìûå íà îñíîâå èìåíè ôàéëà ñî ñòàòüåé. Ñíà÷àëà "âûòàùèì" ýòî èìÿ èç ïîëíîãî èìåíè ôàéëà (ïîÿñíåíèÿ ê èñïîëüçóåìûì ôóíêöèÿì ñìîòðèòå â ïðåäûäóùåé ãëàâå):

$nom=substr(basename($PHP_SELF), 0, -4);

...à ñàìè ôàéëû íàçîâåì íà îñíîâå ýòîãî èìåíè, ïîëó÷èâ èìÿ ôàéëà ñ êîëè÷åñòâîì îöåíîê ïðèáàâëåíèåì ê íåìó îêîí÷àíèÿ "kol", à èìÿ ôàéëà ñî ñðåäíèì áàëëîì - îêîí÷àíèÿ "est" (ðèñ. 10.1):

$kolvooc="$nom"."kol"; $ocenka="$nom"."est";

Ðèñ. 10.1. Ôàéëû ñèñòåìû îöåíèâàíèÿ.
Ñëåâà - ñòàòüè, ôàéëû ñî ñöåíàðèÿìè è ïàïêà ñ ôàéëàìè îöåíîê, ñïðàâà -ñîäåðæèìîå ýòîé ïàïêè


Òåïåðü âûâåäåì ñâåäåíèÿ îá óæå âûñòàâëåííûõ îöåíêàõ.

echo ("Îöåíîê ýòîé ñòàòüå - ");

Åñëè ôàéë ñî ñâåäåíèÿìè î êîëè÷åñòâå îöåíîê ñóùåñòâóåò (îí ñîçäàåòñÿ ïðè ïåðâîì îöåíèâàíèè)...

if (file_exists("$dirct/$kolvooc")==True)
{



...òî âñòàâèì åãî çíà÷åíèå â äîêóìåíò.

include ("$dirct/$kolvooc");

Åñëè æå òàêîâîãî ôàéëà íåò, ò. å. äîêóìåíò íè ðàçó íå îöåíèâàëñÿ...

}
else
{

...âûâåäåì çíà÷åíèå "0".

echo ( " 0 " ) ;
}

Åñëè ôàéë ñî ñðåäíèì áàëëîì ñóùåñòâóåò...

if (file_exists("$dirct/$ocenka")==True)
{

...òî íàäî âûâåñòè åãî çíà÷åíèå.

echo (". Ñðåäíèé áàëë - ");

Íî ïðîñòî âêëþ÷èòü ñîäåðæèìîå ôàéëà íà ñòðàíèöó íåëüçÿ - ñðåäíèé áàëë ìîæåò áûòü è äëèííîé äåñÿòè÷íîé äðîáüþ. Ïîýòîìó îòêðîåì ôàéë äëÿ ÷òåíèÿ êîìàíäîé f open (ïîäðîáíåå îá ýòîé êîìàíäå ñìîòðèòå â ïðåäûäóùåé ãëàâå)...

$hdl â fopen("$dirct/$ocenka", "r+");

...è ñ÷èòàåì â ïåðåìåííóþ Ssred âñå ñîäåðæèìîå ýòîãî ôàéëà.

$sred = fread($hdl, filesize("$dirct/$ocenka"));

Ïðèìå÷àíèå:
Ôóíêöèÿ fread (äåñêðèïòîð ôàéëà, äëèíà ñ÷èòûâàåìîãî ôðàãìåíòà) ñ÷èòûâàåò èç îòêðûòîãî ôàéëà, äëÿ êîòîðîãî ïîëó÷åí óêàçàííûé â åå ïåðâîì ïàðàìåòðå äåñêðèïòîð, ñòîëüêî áàéò, ñêîëüêî óêàçàíî â åå âòîðîì ïàðàìåòðå (÷òåíèå íà÷èíàåòñÿ ñ ìåñòîíàõîæäåíèÿ òàê íàçûâàåìîãî óêàçàòåëÿ ôàéëà — îòìåòêè, ïîêàçûâàþùåé òåêóùåå ìåñòî ðàáîòû ñ ôàéëîì; óêàçàòåëü äâèãàåòñÿ ïðè ÷òåíèè èëè çàïèñè â ôàéë, à òàêæå ïðè èñïîëüçîâàíèè êîìàíäû fseek).
Ôóíêöèÿ filesize (ïîëíûé ïóòü ê ôàéëó) âîçâðàùàåò ðàçìåð óêàçàííîãî â åå ïàðàìåòðå ôàéëà â áàéòàõ.

Ôàéë ìîæíî çàêðûòü...

fclose($hdl);

...à ïåðåìåííóþ $sred - îêðóãëèòü äî äåñÿòûõ

$sred=round ($sred, 1);

Ïðèìå÷àíèå:
Ôóíêöèÿ round (÷èñëî, êîëè÷åñòâî ðàçðÿäîâ) îêðóãëÿåò äðîáíîå ÷èñëî â åå ïåðâîì ïàðàìåòðå äî êîëè÷åñòâà ðàçðÿäîâ, óêàçàííîãî â åå âòîðîì ïàðàìåòðå. Ñêàæåì, round (÷èñëî, 1) îêðóãëèò ÷èñëî äî äåñÿòûõ, round (÷èñëî, 2) - äî ñîòûõ è ò. ä.

 ÐÍÐ äî ÷åòâåðòîé âåðñèè ôóíêöèÿ round ìîãëà îêðóãëÿòü ÷èñëà òîëüêî äî öåëûõ, ïîýòîìó â òîì ñëó÷àå, åñëè âû ðàñïîëàãàåòå òîëüêî òàêîé âåðñèåé ÐÍÐ, òî êîìàíäà îêðóãëåíèÿ äî äåñÿòûõ äîëæíà âûãëÿäåòü êàê

$sred=(round ($sred*10))/10; ...è âûâåñòè íà ñòðàíèöó.
echo ("$sred.");
}

Èìÿ cookie, â êîòîðîì áóäåò íàõîäèòüñÿ èíôîðìàöèÿ î òîì, ãîëîñîâàë ëè ïîñåòèòåëü çà äàííóþ ñòàòüþ èëè íåò, òîæå áóäåò îáðàçîâûâàòüñÿ èç èìåíè ôàéëà ñòàòüè. Çàïèøåì ýòî èìÿ â ïåðåìåííóþ $haveestim...

$haveestim=$nom."haveest";

...è ïðîâåðèì, îïðåäåëåíà ëè ïåðåìåííàÿ ñ òàêèì èìåíåì - ò. å. óñòàíîâëåí ëè îäíîèìåííûé cookie èëè íåò (ðèñ. 10.2). Ìîæíî áûëî áû òàêæå ïðîâåðÿòü, êàêîå çíà÷åíèå èìååò äàííàÿ ïåðåìåííàÿ, íî äëÿ íàøåãî ñöåíàðèÿ ýòî íåâàæíî - åñëè ïåðåìåííàÿ óñòàíîâëåíà è cookie îïðåäåëåí, òî ïîñåòèòåëü óæå ãîëîñîâàë çà äàííóþ ñòàòüþ: âåäü cookie ñ äàííûì èìåíåì óñòàíàâëèâàåòñÿ åìó â ýòîì è òîëüêî â ýòîì ñëó÷àå.

if ($$haveestim=="")

Îáðàòèòå âíèìàíèå íà èìÿ ïðîâåðÿåìîé ïåðåìåííîé - ýòî èìÿ ñàìî ÿâëÿåòñÿ çíà÷åíèåì ïåðåìåííîé Shaveestim (ïîäîáíóþ êîíñòðóêöèþ äîïóñêàþò ïðàâèëà ÐÍÐ, ïîäðîáíåå ñìîòðèòå â ãë. 3).

Ðèñ. 10.2. Ñîäåðæèìîå cookie - ïîìåòêè î ñîñòîÿâøåìñÿ ãîëîñîâàíèè

Ïîñêîëüêó çíà÷åíèÿ cookies äîñòóïíû è ÷åðåç ìàññèâ $HTTP_COOKIE_VARS[], òî ïðîâåðèòü íàëè÷èå cookie ìîæíî è íà îñíîâå àíàëèçà çíà÷åíèé ýòîãî ìàññèâà:

if ($HTTP_COOKIE_VARS[$haveestim]=="")

èëè â ÐÍÐ âåðñèè 4.1 è âûøå

if ($_COOKIE[$haveestim]==" ")

Êîììåíòàðèé:
Ïîìíèòå, ÷òî äîñòóïíîñòü äàííûõ cookie çàâèñèò îò íàñòðîåê â ôàéëå php.ini (ðèñ.10.3) - åñëè â ôàéëå php.ini óñòàíîâëåí â on ïàðàìåòð register_globals, òî ñîäåðæèìîå cookie äîñòóïíî â ñöåíàðèè â ïåðåìåííîé ñ òåì æå èìåíåì, ÷òî è cookie, à åñëè ephp.ini óñòàíîâëåí â on ïàðàìåòð trackjvars, òî ñîäåðæèìîå cookie äîñòóïíî â ñöåíàðèè â îäíîèìåííîì ñ ýòèì cookie ýëåìåíòå ìàññèâà SHTTPCOOKIEVARSfJ (ñ ÐÍÐ 4.1 -è $_ÑÎÎÊ1Å[]).

Èñïîëüçîâàòü ìàññèâû $HTTP_COOKIE_VARS[] è $_ÑÎÎÊ1Å[] ëó÷øå ñ òî÷êè çðåíèÿ áåçîïàñíîñòè. Åñëè â ñöåíàðèè èñïîëüçóþòñÿ îäíîèìåííûå cookie ïåðåìåííûå, à íå ýëåìåíòû ýòèõ ìàññèâîâ, òî â òîì ñëó÷àå, åñëè cookie íå óñòàíîâëåí, çëîóìûøëåííèê âñå ðàâíî ìîæåò ïåðåäàòü ñöåíàðèþ çíà÷åíèå òàêîé ïåðåìåííîé, ïîïðîñòó óêàçàâ åãî â àäðåñíîé ñòðîêå áðàóçåðà.  óêàçàííûå æå ìàññèâû ïîïàäàþò èñêëþ÷èòåëüíî ïîëó÷åííûå ñ cookie äàííûå. Îäíàêî â ðàññìàòðèâàåìîì â äàííîé ãëàâå ñöåíàðèè ýòî íåñóùåñòâåííî. 118

Ðèñ. 10.3. Ôàéë php.ini. Âûøåóïîìÿíóòûå íàñòðîéêè

Åñëè cookie íå óñòàíîâëåí - ò. å. ïîñåòèòåëü ðàíåå íå ãîëîñîâàë çà äàííóþ ñòàòüþ...

{

òî âûâåäåì åìó ôîðìó äëÿ ãîëîñîâàíèÿ

. ?>
<form method="post" action="otziv.php">

Ïåðåäàäèì â ñêðûòîì ïîëå ôîðìû èìÿ ôàéëà ñî ñòàòüåé áåç ðàñøèðåíèÿ - äëÿ îïðåäåëåíèÿ íà îñíîâå íåãî ñöåíàðèåì-îáðàáîò÷èêîì èìåí ôàéëîâ ñî ñâåäåíèÿìè î êîëè÷åñòâå îöåíîê è ñðåäíåì áàëëå, à òàêæå ïîëíîå èìÿ, âìåñòå ñ ïóòåì, ôàéëà ñî ñòàòüåé - äëÿ âûâîäà ññûëêè "Íàçàä" íà ñòðàíèöå ñî ñöåíàðèåì-îáðàáîò÷èêîì.  ïðèíöèïå ìîæíî áûëî áû ïåðåäàâàòü ÷åðåç ôîðìó òîëüêî ïîëíîå èìÿ ôàéëà ñî ñòàòüåé, à "÷èñòîå" èìÿ ôàéëà ñòàòüè îïðåäåëÿòü â ñöåíàðèè-îáðàáîò÷èêå òî÷íî òàê æå, êàê è â ñöåíàðèè èç niz.php - íà îñíîâå ôóíêöèè basename, íî äëÿ ñîêðàùåíèÿ äëèíû êîäà â îáðàáîò÷èêå âîñïîëüçóåìñÿ ïåðåäà÷åé åãî ÷åðåç ôîðìó.

<input name="nom" type="hidden" value="<?php echo $nom; ?>">
<input type=hidden name=nazad value=<?php echo ($PHP_SELF); ?>>

Âûâåäåì ôîðìó ââîäà îöåíêè:
Ïîñòàâüòå îöåíêó ñòàòüå:

<SELECT NAME=ocen>
<OPTION VALUE=5>5 (Îòëè÷íî)
«DPTION VALUE=4>4 (Õîðîøî)
<OPTION VALUE=3>3 (Óäîâëåòâîðèòåëüíî)
<OPTION VALUE=2>2 (Ïëîõî)
<OPTION VALOE=1>1 (Î÷åíü ïëîõî)
</SELECT>

 ðåçóëüòàòå â ñöåíàðèé-îáðàáîò÷èê áóäåò ïåðåäàíà ïåðåìåííàÿ Socen (è îäíîèìåííûå ýëåìåíòû ìàññèâîâ $HTTP_POST_VARS, $_POST ïðè ñîîòâåòñòâóþùèõ âåðñèÿõ ÐÍÐ è íàñòðîéêàõ â php.ini) ñî çíà÷åíèåì, ðàâíûì ïàðàìåòðó value âûáðàííîãî ïîëüçîâàòåëåì ïóíêòà âûïàäàþùåãî ñïèñêà.
Âûâåäåì êíîïêó îòïðàâêè ôîðìû (ðèñ. 10.4).

Ðèñ. 10.4. Ñèñòåìà îöåíèâàíèÿ â äåéñòâèè...

<input name="submit" type="submit" value="Ïîñëàòü îöåíêó"></form>
<?php

À åñëè ïîñåòèòåëü óæå ãîëîñîâàë çà äàííóþ ñòàòüþ - ò. å. cookie ñ ñîîòâåòñòâóþùèì èìåíåì ó íåãî óñòàíîâëåí...

}
else {

...òî ñîîáùèì åìó îá ýòîì (ðèñ. 10.5).

echo ("Âû óæå ãîëîñîâàëè çà ýòó ñòàòüþ!");

Ðèñ. 10.5. ...íî ãîëîñîâàíèå óæå ñîñòîÿëîñü

Âîò è âñå.


Ñîäåðæàíèå ðàçäåëà