Stepan Roh's Ratings 0.1 (c)2000 Štěpán Roh
-------------------------------------------
CGI skript ratings.pl implementuje jednoduchý hlasovací systém. Funguje
dvěma způsoby. Buď se vkládá přes SSI direktivu #include a tehdy vrací
aktuální stav hlasování nebo se volá jako CGI a tehdy slouží k hlasování.
Může mít čtyři parametry. Parametr profile určuje jméno uživatelského
profilu (s kterým je spojeno jméno datového souboru), není-li uveden, pak v
případě, že dokument odkazuje na uživatelský web (~user), bere se soubor
.htratings v adresáři WWW daného uživatele (ten se bere i v případě, že
profil je jménem uživatele), jinak se bere profil jménem global. Datový
soubor musí být zapisovatelný pro webový server (prakticky to znamená, že
musí mít právo write pro ostatní).
Parametr item určuje jméno položky, není-li uveden, bere se jméno aktuálního
dokumentu bez úvodních lomítek, popř. bez počátečního ~user, a bez příp.
parametrů za otazníkem, u kterého se navíc nahradí lomítka a mezery za
podtržítka (takže /~stepan/test/test.shtml?val=2 se změní na
test_test.shtml).
Dalším parametrem je rating, kde je uložena hlasovaná hodnota.
Posledním parametrem je view. Má-li nenulovou hodnotu, pak se neprovádí
inkrementace čítače, ale pouze jeho zobrazení (resp. zobrazení podílu
celkové hodnoty a počtu hlasujících). Není-li uveden, má nulovou hodnotu v
případě, že je uveden i parametr rating, jinak má nenulovou hodnotu. Je-li
roven 'num', zobrazí se počet hlasujících, je-li roven 'sum', zobrazí se
celková hodnota.
Datový soubor má řádky formátu jméno
položky::minimum::maximum::krok::přesnost zobrazení na desetinná
místa::součet::počet::URL stránky zobrazené při úspěchu::URL stránky
zobrazené při neúspěchu::soubor se záznamem hlasování::poslední hlasující IP
adresa. Všechny položky musí být v datovém souboru uvedeny předem, není-li
nějaká uvedena, pak se místo její hodnoty vrátí 'XXX' a v error_log se
objeví chybová hláška. Řádky a položky začínající na '#' se ignorují.
Stránky pro úspěch a neúspěch se zobrazují pouze, je-li skript spuštěn v
módu přidávání. Soubor se záznamem hlasování nemusí být uveden, pak se žádné
záznamy nevedou. Tento soubor musí být zapisovatelný pro webový server.
Zapisuje se do něj každý úspěšný pokus o hlasování ve formátu:
[datum a čas] IP adresa hlasovaná hodnota
Poslední hlasující IP zaznamenává údaj o poslední IP adrese, z které se
hlasovalo. Hlasuje-li někdo z této adresy znovu, pak se jeho hlas
nezapočítá. Pro vypnutí této vlastnosti stačí na místo této adresy napsat
pomlčku.
Datový soubor se vždy celý načte a poté celý zapíše. V případě, že je
činnost skriptu přerušena uprostřed zápisu, může se soubor poškodit. Proto
radím - kontrolujte a zálohujte.
Příklad souboru .htratings:
test::0::100::10::0::690::15::/~stepan/test.shtml::/x::/home/stepan/WWW/.htratings.test::-
Příklad hlasovací stránky:
%
(
hlasujících)
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Štěpán Roh