ÔÀÉË 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. ...íî ãîëîñîâàíèå óæå ñîñòîÿëîñü
Âîò è âñå.