![]() |
![]() ![]() |
![]() |
-stokrotka- |
![]()
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? ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Uzyj sesji. Gdy user wchodzi na dowolna ze stron zmniejszasz wartosc zmiennej sesyjnej o 1 (licznik dostepnych klikniec). Gdy jest == 0 to user nie moze nic wiecej obejrzec.
A zwiekszanie ilosci mozliwych klikniec co godzine to zalatwisz cron'em, lub podlacz pod strone skrypt ktory bedzie sprawdzal (przy wejsciu dowolnego usera na dowolna strone) czy minela juz godzina. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Cytat lub podlacz pod strone skrypt ktory bedzie sprawdzal (przy wejsciu dowolnego usera na dowolna strone) czy minela juz godzina. dokladnie ile minelo godzin i mnozysz przez 5, bo uzytkownik mogl sie nie logowac np. przez 4 godziny |
|
|
-stokrotka- |
![]()
Post
#4
|
Goście ![]() |
Cytat(dr_bonzo @ 2005-09-23 10:48:25) podlacz pod strone skrypt ktory bedzie sprawdzal (przy wejsciu dowolnego usera na dowolna strone) czy minela juz godzina. Ale ja wlasnie o to pytam... czy ktos zna moze taki skrypt, albo wie jak go napisac? jak polaczyc czas ze zmiana wartosci w tabeli dla danego usera. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 0 Dołączył: 13.07.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zrobisz w tabeli kolumny "ostanie logowanie-data" i "ostanie logowanie-godzina". Gdy sie uzytkownik zaloguje to zostanie zapisana data i godzina... Później na każdej stronie robisz porównanie z bazą danych. If różnica pomiędzy czasem rzeczywistym, a czasem w tabeli jest większa od 1 godziny to usuwa sesje, w przeciwnym razie dalej sesja istnieje... O to chodziło??
-------------------- "Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny "Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein "Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein "Nieprawda powtarzana wielokrotnie staje się prawdą" |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 23.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie godzine po wejsciu, a o pelnej godzinie ruch +5
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 0 Dołączył: 13.07.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Czyli chodzi o to, że w przeciągu godziny użytkownik ma 5 ruchów? I jeżeli wykorzysta te ruchy to już nie może więcej chodzić po stronie, chyba, że nadejdzie kolejna godzina od daty ostatniego logowania?
![]() -------------------- "Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny "Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein "Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein "Nieprawda powtarzana wielokrotnie staje się prawdą" |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 23.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(gladiror @ 2005-09-23 11:53:51) Czyli chodzi o to, że w przeciągu godziny użytkownik ma 5 ruchów? I jeżeli wykorzysta te ruchy to już nie może więcej chodzić po stronie, chyba, że nadejdzie kolejna godzina od daty ostatniego logowania? ![]() uzytkownik ma iles tam ruchów, o pelnej godzinie (nie od logowania, ale takiej na zegarku) dodaje mu sie kolejne 5 mozliwości klikniecia (5 ruchów), niezaleznie ile ma w tej chwili. Jeżeli wykorzysta wszystkie ruchy to nastepne dostanie o pelnej godzinie. Czyli: Wykorzysta ostatnia mozliwosc klikniecia o 6:54, a o 7:00 bedzie juz mogl wykonac 5 klikniec w strony... No i pytanie jak polaczyc ten czas zegarowy z dodaniem wartosci w tabeli... Mam nadzieje, ze juz wiadomo o co mi chodzi. Pomoze ktos? Jakieś pomysly? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 0 Dołączył: 13.07.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
A naliczanie co godzine ma być również wtedy gdy użytkownik nie jest na stronie? Czy jak ma naliczać? Do czego w ogóle to jest potrzebne?
![]() -------------------- "Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny "Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein "Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein "Nieprawda powtarzana wielokrotnie staje się prawdą" |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
pobierasz z bazy ilosc ruchow ktore zostaly uzytkownikowi do wykorzystania. dodajesz 5 ruchow i zapisujesz spowrotem do bazy. najlepiej zrob w petli zeby wczytywalo kolejnych uzytkownikow. a zeby skrypt sie wykonywal co godzine musisz wrzucic go do cron'a.
Ten post edytował Pigula 23.09.2005, 13:34:13 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Do wykonania tego nie jest potrzebny zaden cron.
Uzytkonik ma zapisane w bazie ile ma zetonow (pkt jak kto woli). Logujac sie pobierane sa te dane i zapisywane w zmiennej sesyjnej. Kazde wywolanie podstrony powoduje wykonanie nastepujacego algorytmu: -pobranie aktualnej liczby zetonow N -pobranie czasu ostatniego klikniecia T1 -pobranie aktualnego czasu T2 -obliczenie ile pelnych godzin bylo mieczy czasem T2 a T1 (czyli jesli T1=16:49, a T2=17:01 to byla jedna pelna godzina 17:00) K (trzeba wziac tez pod uwage daty, bo user mogl nie zagladac na stronke od kilku dni) -wyznaczenie ilosci nowych rzetonow dla danego usera poprzez wzor N = N + K * jakas_stala (charakterystyczna dla danego usera, albo dla wszystkich taka sama) W ten sposob nie trzeba uzywac crona (dla duzej licznby uzytkownikow niepotrzebnie uaktualniane sa dane w bazie, takze dla tych ktorzy np od tygodnia nie zagladali na stronke). To tak ogolem, mysle ze da sie to wykonac - mam nadzieje ze nie pospieszylem sie za bardzo ![]() Ten post edytował Radarek 23.09.2005, 13:55:12 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 23.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dżisys... ja juz widze siebie jak pisze taki skrypt...
![]() ![]() Widać nie dla psa kielbasa... tzn nie dla 100krotki skrypt ![]() |
|
|
![]()
Post
#13
|
|
![]() 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:
po ponownym kliknięciu odczytaj czas z sesji do zmiennej $login_at
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:
Oczywiście skrypty są poglądowe i nie testowane, pozatym brakuje tam sesji czy bazy MySQL, ale warto się z tym pobawić. -------------------- www.szymaszkiewicz.com
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A ja myslalem o czyms prostszym:
cron: co godzine wlaczasz skrypt ktory robi tylko:
A jak nie masz crona to zapisujesz w pliku czas ostatniego dodawania klikniec, przy kazdym otwarciu strony sprawdzasz czy minelo 5 godzin, jesli tak to uaktualniasz czas i wykonujesz skrypt z powyzszym SQLem. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 29.08.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się że naszemu założycielowi tematu nie chodzi o dodawanie kliknięć w nieskończoność, tylko o czyste ograniczenie ilości kliknięć na godzinę, bez sumowania ich na zapas, skrypcik podwieszę za 20 minut jak go zrobię
![]() OTO SKRYPT:
Istnieje jednak zagrożenie że użytkownik, po dokonaniu wylogowani i ponownego zalogowania znów będzie miał domyślne 5 kliknięć, trzebaby to również zabezpieczyć, jak naprzykład sprawdzając przy logowaniu, kiedy nastąpiło ostatnie logowanie, jeżeli nie minęła jeszcze godzina to nie nadpisywać login_date i pozostawić hour_limit... CO POZWOLI NA KONTYNUOWANIE poprzedniego stanu licznika i nie wydłuży oczekiwania na nastepne kliknięcia. Ten post edytował Bartech 23.09.2005, 15:24:28 -------------------- www.szymaszkiewicz.com
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Patrz:
Cytat uzytkownik ma iles tam ruchów, o pelnej godzinie (nie od logowania, ale takiej na zegarku) dodaje mu sie kolejne 5 mozliwości klikniecia (5 ruchów), niezaleznie ile ma w tej chwili. Jeżeli wykorzysta wszystkie ruchy to nastepne dostanie o pelnej godzinie. Cytat Raczej nie godzine po wejsciu, a o pelnej godzinie ruch +5
-------------------- Nie lubię jednorożców.
|
|
|
-Gość_stokrotka- |
![]()
Post
#17
|
Goście ![]() |
Raczej chodzilo mi o to, co napisal dr bonzo, aczkolwiek Bartech dziekuje tobie bardzo - może twoje rozwiazanie bedzie bardziej uzyteczne w praktyce dnia codziennego.
----edit---- Stokroteczko kochana ![]() Loguj się skoro juz się zarejestrowałaś. ~mike_mech |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 04:28 |