Podpowiedź mojego poprzednika ("dr_bonzo") jest słuszna.
Skrypt który miałby sprawdzać czy minęła już godzina, może działać następująco:
- zapisujesz godzinę zalogowania
- po każdym kliknięciu sprawdź ile minęło sekund od zalogowania
- jeżeli ilość sekund jest większa niż 3600 to licznik_kliknięć + 5
- jeżeli ilość sekund mniejsza od 3600 to nic nie rób
przy zalogowaniu
zapisywanie czasu wyglądało by to mniej więcej tak:
<?php
//użycie unixowego czasu, liczonego w sekundach
//tu zapsz $login_at do sesji lub do bazy lub gdzie wolisz
?>
po ponownym kliknięciu
odczytaj czas z sesji do zmiennej $login_at
<?php
//porównanie czasu
if($login_at + 3600
> date("U")): $ilosc_klikniec + 5; endif;
?>
Problem został jednak rozpatrony w prymitywny sposób, ponieważ takie rozwiązanie pozwala Tobie na powiększanie konta kliknięć tylko wówczas kiedy użytkownik jest zalogowany i do tego zalogowany przez conajmniej jedną pełną godzinę, jeżeli włączysz wygasanie sesji na mniej niż godzinę albo użytkownik się wyloguje wcześniej to straci czas który już minął.
Gdybyś chciał żeby kliknięcia naliczane były non stop nie zależnie czy użytkownik jest zalogowany czy nie, to musisz przyjąć inną strategię!!! Wyglądałoby to tak:
w bazie danych z użytkownikami wprowadź kolumny: data założenia konta (actv_date), ilość wykożystyanych kliknięć (il_wyk_klik).
Mając takie informacje, mógłbyś:
- każde kliknięcie musi powiększać o jedność ilość wykożystanych kliknięć
- odjąć od aktualnej daty (w sekundach UNIX) datę zalogowania i podzielić ją przez 3600
- uzyskaną w ten sposób liczbę godzin w systemie mnożysz razy Twoją godzinową stawkę kliknięć i masz limit klikania
- następnie sprawdzasz czy liczba kliknięć nie jest większ od obliczonej liczby dozwolonych kliknięć i masz rozwiązanie:
<?php
$il_wyk_klik++; // to powiększa o jeden
//zapisz do kolumny "il_wyk_klik"
//aktualna data
//pobież datę aktywacji konta, później
$minus_date = $act_date - $actv_date;
$max_klik = $minus_date/3600;
if($max_klik > $il_wyk_klik):
//warunek spełniony można klikać dalej!!!
else:
echo "wyczerpałeś limit kliknięć"; endif;
?>
Oczywiście skrypty są poglądowe i nie testowane, pozatym brakuje tam sesji czy bazy MySQL, ale warto się z tym pobawić.