Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> limit ruchu po stronie, dla danego uzytkownika
-stokrotka-
post
Post #1





Goście







Witam serdecznie.
Probuje zrobic cos takiego:
Uzytkownik sie rejestruje (to juz mam), loguje (rowniez dziala) ale po wejsciu ma ograniczony limit ruchu... w sensie takim, ze do kazdego uzytkownika, w bazie bedzie podana wartosc ile klikniec moze wykonac (to jest w miare do zrobienia) na tomiast problem mam z tym, zeby wartosc w kolumnie ruch po godzinie wzrastala o 5 - i tu jest problem. Wie ktoś jak to zrobic? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bartech
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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:
  1. <?php
  2.  
  3. //użycie unixowego czasu, liczonego w sekundach
  4. $login_at = date("U"));
  5. //tu zapsz $login_at do sesji lub do bazy lub gdzie wolisz
  6.  
  7. ?>


po ponownym kliknięciu
odczytaj czas z sesji do zmiennej $login_at
  1. <?php
  2.  
  3. //porównanie czasu
  4. if($login_at + 3600 > date("U")): $ilosc_klikniec + 5; endif;
  5.  
  6. ?>



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:

  1. <?php
  2.  
  3. $il_wyk_klik++; // to powiększa o jeden
  4. //zapisz do kolumny "il_wyk_klik"
  5. //aktualna data
  6. $act_date = date("U");
  7. //pobież datę aktywacji konta, później
  8. $minus_date = $act_date - $actv_date;
  9. $max_klik = $minus_date/3600;
  10. if($max_klik > $il_wyk_klik):
  11. //warunek spełniony można klikać dalej!!!
  12.  
  13. else:
  14. echo "wyczerpałeś limit kliknięć";
  15. endif;
  16.  
  17. ?>


Oczywiście skrypty są poglądowe i nie testowane, pozatym brakuje tam sesji czy bazy MySQL, ale warto się z tym pobawić.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.09.2025 - 12:25