ÔÀÉË OTZIV.PHP
Êîä â ýòîì ôàéëå ðàññ÷èòûâàåò íîâûé ñðåäíèé áàëë ñòàòüè íà îñíîâå ïåðåäàííîé ÷åðåç ôîðìó îöåíêè ïîñåòèòåëÿ è òåêóùåãî ñðåäíåãî áàëëà, çàïèñûâàåò çíà÷åíèÿ ñðåäíåãî áàëëà è êîëè÷åñòâà îöåíîê â ñîîòâåòñòâóþùèå ôàéëû, à òàêæå ïîìå÷àåò áðàóçåð ïîñåòèòåëÿ cookie äëÿ íåäîïóùåíèÿ ïîâòîðíîãî ãîëîñîâàíèÿ òîãî æå ñàìîãî ïîñåòèòåëÿ.
<?php
Ïîñêîëüêó èçìåíÿòü çíà÷åíèÿ ñðåäíåãî áàëëà è êîëè÷åñòâà îöåíîê èìååò ñìûñë ëèøü â òîì ñëó÷àå, åñëè ïîñåòèòåëü åùå íå ãîëîñîâàë çà ñòàòüþ, òî âíîâü ñîñòàâèì èìÿ cookie, ñëóæàùåãî "ïîìåòêîé" ñâåðøèâøåãîñÿ ãîëîñîâàíèÿ...
$namecook=$nom."haveest";
...è âåñü äàëüíåéøèé êîä âûïîëíèì òîëüêî â òîì ñëó÷àå, åñëè òàêîãî cookie óñòàíîâëåíî íå áûëî.
if ($$namecook=="")
Ïðèìå÷àíèå:
Âìåñòî ýòîé ñòðîêè ìîæíî èñïîëüçîâàòü ñòðîêó
i f ($HTTP_COOKIE_VARS[$haveestim]=="") èëè â PHP âåðñèè 4.1 è âûøå — ñòðîêó
if ($_COOKIE[$haveestim]=="") êàê óæå óêàçûâàëîñü âûøå.
Êîììåíòàðèé:
Êàçàëîñü áû — à çà÷åì, ñîáñòâåííî, ïðîâåðÿòü íà ýòîé ñòðàíèöå, óñòàíîâëåí ëè cookie? Âåäü ôîðìà äëÿ âûñòàâëåíèÿ îöåíêè íà ïðåäûäóùåé ñòðàíèöå ìîæåò ïîÿâèòüñÿ íà íåé òîëüêî â òîì ñëó÷àå, åñëè cookie îòñóòñòâóåò, íå òàê ëè? Íî âñå äåëî â òîì, ÷òî ïîñåòèòåëü, æåëàþùèé ñäåëàòü "íàêðóòêó" ñòàòüè, ïðîãîëîñîâàâ çà íåå ìíîæåñòâî ðàç, âïîëíå ìîæåò ñîõðàíèòü íà ñâîåì êîìïüþòåðå ëîêàëüíóþ êîïèþ ñòàòüè ñ ôîðìîé äëÿ âûñòàâëåíèÿ îöåíêè, è óæå ñ íåå îñóùåñòâëÿòü ãîëîñîâàíèå. ßñíî, ÷òî îòîáðàæåíèå ôîðìû íà ëîêàëüíîé êîïèè ñòðàíèöû îò íàëè÷èÿ èëè îòñóòñòâèÿ cookie íå çàâèñèò, — ïîýòîìó è ïðèõîäèòñÿ îñóùåñòâëÿòü ïðîâåðêó åùå è çäåñü.
Èòàê, åñëè ïîñåòèòåëü åùå íå ãîëîñîâàë çà äàííóþ ñòàòüþ...
{
...óñòàíîâèì cookie, ãîâîðÿùèé, ÷òî òàêîå ãîëîñîâàíèå íàêîíåö ñîâåðøèëîñü. Âðåìÿ æèçíè cookie óñòàíîâèì â ìåñÿö - ïîæàëóé, õâàòèò. (Ïîÿñíåíèå ïî ôóíêöèè óñòàíîâêè cookie ñìîòðèòå â ãë. 8).
SetCookie("$namecook","1",time()+2 592000);
Çàïèøåì â ïåðåìåííûå èìåíà äèðåêòîðèè ñ ôàéëàìè îöåíîê è ñàìèõ ýòèõ ôàéëîâ:
$dirct="cnt";
$kolvooc="$nom"."kol";
$ocenka="$nom"."est";
Åñëè ôàéëû îöåíîê íå ñóùåñòâóþò (ò. å. âûñòàâëÿåìàÿ îöåíêà - âîîáùå ïåðâàÿ ïî ñ÷åòó)...
if ((file_exists("$dirct/$kolvooc")!=True)||
(file_exists("$dirct/$name2")!=True)) {
...òî çàïèøåì â ôàéë ñî ñâåäåíèÿìè î êîëè÷åñòâå îöåíèâøèõ ÷èñëî 1 (òàê âåäü è åñòü, íå ïðàâäà ëè?)...
$hdll = fopen("$dirct/$kolvooc", "a+"); fwrite($hdll,l); fclose($hdll);
...à â ôàéë ñî ñâåäåíèÿìè î ñðåäíåì áàëëå - âûñòàâëåííóþ ïîñåòèòåëåì îöåíêó (îíà âåäü è åñòü "ñðåäíåå" îò ñàìîé ñåáÿ):
$hdl2 = fopen("$dirct/$ocenka", "a+");
fwrite($hdl2,$ocen);
fclose($hdl2);
Åñëè æå ôàéëû ñî ñâåäåíèÿìè îá îöåíêå óæå ñóùåñòâóþò...
else
...òî ñ÷èòàåì äëÿ íà÷àëà ñîäåðæèìîå ôàéëà ñ êîëè÷åñòâîì îöåíîê â ïåðåìåííóþ
kvo...
$hdll = fopen("$dirct/$kolvooc", "r+");
$kvo ¦ fread($hdll, filesize("cnt/$kolvooc"));
...à çàòåì óâåëè÷èì çíà÷åíèå ýòîé ïåðåìåííîé íà 1 - ÷òî è áóäåò íîâûì êîëè÷åñòâîì îöåíîê, ñ ó÷åòîì ïîñëåäíåé âûñòàâëåííîé:
$kvo++;
Òåïåðü íàì íàäî âåðíóòü òî÷êó ñ÷èòûâàíèÿ (òàê íàçûâàåìûé "óêàçàòåëü") â íà÷àëî ôàéëà - äëÿ òîãî, ÷òîáû çàïèñàòü â ôàéë íîâîå çíà÷åíèå êîëè÷åñòâà îöåíîê. Âåäü â ðåçóëüòàòå ïðîâåäåíèÿ îïåðàöèè ÷òåíèÿ êîëè÷åñòâà îöåíîê èç ôàéëà òî÷êà ñ÷èòûâàíèÿ - óêàçàòåëü - ïåðåìåñòèëàñü â åãî êîíåö. Äëÿ ñîâåðøåíèÿ äàííîé îïåðàöèè âîñïîëüçóåìñÿ êîìàíäîé rewind:
rewind($hdll);
Ïðèìå÷àíèå:
Êîìàíäà rewind (äåñêðèïòîð îòêðûòîãî ôàéëà) ïåðåìåùàåò òî÷êó ñ÷èòûâàíèÿ è çàïèñè äàííûõ â ôàéë (ò. å. óêàçàòåëü ôàéëà), â íà÷àëî ýòîãî ôàéëà. Åñëè âû çàïèñûâàåòå ÷òî-ëèáî â ôàéë ïîñëå ñ÷èòûâàíèÿ èç íåãî äàííûõ, òî âàì íåîáõîäèìî ïåðåä çàïèñüþ âîñïîëüçîâàòüñÿ ýòîé êîìàíäîé.
Ñëåäóåò ïîìíèòü, ÷òî åñëè ôàéë áûë îòêðûò êîìàíäîé fopen ñ ïàðàìåòðîì à èëè a+, òî íåçàâèñèìî îò ïîëîæåíèÿ óêàçàòåëÿ çàïèñü íîâûõ äàííûõ êîìàíäîé fwrite áóäåò îñóùåñòâëÿòüñÿ âêîíåö ôàéëà.
Çàïèøåì íîâîå çíà÷åíèå êîëè÷åñòâà îöåíîê â ïðåäíàçíà÷åííûé äëÿ õðàíåíèÿ ýòîé âåëè÷èíû ôàéë...
fwrite($hdll,$kvo);
...è çàêðîåì åãî.
fclose($hdll);
Òåïåðü ðàçáåðåìñÿ ñî ñðåäíèì áàëëîì. Îòêðîåì ôàéë, ãäå õðàíèòñÿ åãî çíà÷åíèå...
$hdl2 = fopen("$dirct/$ocenka", "r+");
...çàïèøåì ýòî çíà÷åíèå â ïåðåìåííóþ...
$sred= fread($hdl2, filesize("cnt/$ocenka"));
...è ðàññ÷èòàåì íîâóþ âåëè÷èíó ñðåäíåãî áàëëà - íà îñíîâå åãî ñòàðîãî çíà÷åíèÿ, à òàêæå èíôîðìàöèè î êîëè÷åñòâå îöåíîê è íîâîé îöåíêè.
$sred=($sred*($kvo-l)+$ocen)/$kvo;
Òåïåðü çàïèøåì ýòè ñâåäåíèÿ â ïðåäíàçíà÷åííûé äëÿ íèõ ôàéë -òî÷íî òàê æå, êàê è ïàðîé àáçàöåâ âûøå.
rewind($hdl2); fwrite($hdl2,$sred); fclose($hdl2);
Ñîáñòâåííî, è âñå.
Ìîæíî âûâîäèòü èíôîðìàöèþ ïîñåòèòåëþ îá èòîãîâîì ðåçóëüòàòå (ðèñ. 10.6) èëè êðàòêóþ áëàãîäàðíîñòü.
echo ("Áëàãîäàðèì âàñ çà îöåíêó!");
Ðèñ. 10.6. Ïîñëå óñïåøíîãî ãîëîñîâàíèÿ
Ðèñ.10.7. Ïîñëå ïîïûòêè ïîâòîðíîãî ãîëîñîâàíèÿ
Åñëè æå ïîñåòèòåëü óæå ãîëîñîâàë çà äàííóþ ñòàòüþ...
}
else {
...òî ñîîáùèì åìó îá ýòîì (ðèñ. 10.7) - è íè÷åãî äåëàòü íå ñòàíåì, echo ("Âû óæå ãîëîñîâàëè çà ýòó ñòàòüþ!");
}
Ñöåíàðèé çàêîí÷åí. ?>
Îñòàëüíîé òåêñò ñòðàíèöû - íà âàøå óñìîòðåíèå. Ðàçìåñòèòå íà íåé êàòàëîã ðàçäåëîâ ñàéòà, ñïèñîê ñòàòåé èëè ïðîñòî êðàñèâî îôîðìèòå. Åñëè æå ïîæåëàåòå ïîñòàâèòü íà íåé ññûëêó íà îöåíèâàåìóþ ñòàòüþ - òî ïðîñòî ðàçìåñòèòå â íóæíîì ìåñòå âûâîäÿùèé ýòó ññûëêó êîä:
<?php echo ("<a href=$nazad>Ha3afl</a>"); ?>
Ïåðåìåííàÿ Snazad áûëà ïåðåäàíà ÷åðåç ôîðìó, ïîìíèòå?
Êîììåíòàðèé:
 äàííîì ñöåíàðèè äëÿ óïðîùåíèÿ âîñïðèÿòèÿ çíà÷åíèÿ ïåðåìåííûõ, ïåðåäàâàåìûõ ÷åðåç ôîðìó, áðàëèñü èç îäíîèìåííûõ ïåðåìåííûõ â ñöåíàðèè-îáðàáîò÷èêå - òàê êàê íà áåçîïàñíîñòü ðàáîòû ïðîãðàììû ýòî çäåñü íå âëèÿåò: äàæå åñëè çëîóìûøëåííèê ïîäñòàâèò çíà÷åíèå ïåðåìåííîé cookie â àäðåñíóþ ñòðîêó, òî îí òîëüêî ïîòåðÿåò âîçìîæíîñòü ïðîãîëîñîâàòü, è íè÷åãî áîëüøå. Åñëè âû æåëàåòå ñäåëàòü êîä ëó÷øå ñîîòâåòñòâóþùèì ïðàâèëàì ÐÍÐ - çàìåíèòå èõ íà îäíîèìåííûå ýëåìåíòû ìàññèâà $HTTP_POST_VARS[] (â ÐÍÐ âåðñèè äî 4.1) èëè SPOSTfJ (â ÐÍÐ âåðñèè 4.1 è ñòàðøå).
Êàê âñåãäà, ñöåíàðèé ìîæíî ñîâåðøåíñòâîâàòü äî áåñêîíå÷íîñòè. Ìîæíî, íàïðèìåð, ñîâìåñòèòü åãî ñ ðàçáèðàâøåìñÿ â ïðåäûäóùåé ãëàâå ñöåíàðèåì ãîñòåâîé êíèãè - òîãäà ïîñåòèòåëè íàðÿäó ñ îöåíêîé ñòàòüè ìîãóò îñòàâèòü è ñâîé îòçûâ íà íåå. Ìîæíî óâåëè÷èòü êîëè÷åñòâî âîçìîæíûõ îöåíîê, êîòîðûå ïîñåòèòåëè ìîãóò âûñòàâëÿòü ñòàòüÿì -èñïîëüçîâàòü 10-áàëëüíóþ èëè èíóþ ñèñòåìó. Âñå â âàøåé âëàñòè - òâîðèòå...
Forekc.ru
Ðåôåðàòû, äèïëîìû, êóðñîâûå, âûïóñêíûå è êâàëèôèêàöèîííûå ðàáîòû, äèññåðòàöèè, ó÷åáíèêè, ó÷åáíûå ïîñîáèÿ, ëåêöèè, ìåòîäè÷åñêèå ïîñîáèÿ è ðåêîìåíäàöèè, ïðîãðàììû è êóðñû îáó÷åíèÿ, ïóáëèêàöèè èç ïðîôèëüíûõ èçäàíèé