[php] jak dac dostep 10 kredytow na 12 godzin ?

0

Chodzi o to ze jest np grupa newsowa do wysylania postow.
jak user wejdzie wpisze post to na serwie zapisuje sie jego IP,temat,tresc,podpis.

Jak teraz zrobic zeby taki user mogl juz tylko 9 razy wyslac swojego newsa a po 12 godzinach albo np zawsze o godzinie 00:00 aktualizowalo mu sie konto do 10 kredytow?


nie to zebym siedzial bezczynnie i czekal na goowe rozwiazanie ale mam taka mysl:

Wchodzi sobie ktos na stronke. jak wysyla formularz to jego IP zapisuje sie do pliku na serwie. Plik np IP.TXT a wnim linijka
212.123.123.123 | 1 | dd-mm-rrrr

teraz ktos inny wchodzi na stronke i plik wyglada tak :
212.123.123.123 | 1 | dd-mm-rrrr
245.12.123.11 | 1 | dd-mm-rrrr

teraz znowu wchodzi pierwsza osoba i zapisuje sie jej IP jako
212.123.123.123 | 2 | dd-mm-rrrr
245.12.123.11 | 1 | dd-mm-rrrr

czyl iwiemy ze pierwsza osoba wyslal juz dwa razy post :)
teraz jak dojdzie do 10 to jak znowu wysle w tym samym dniu to skrypt musi sprawdzic:


otwieram plik
porownuje IP goscia czy istnieje takie w pliku IP.TXT
jesli tak to odczytuje zawartosc pola z iloscia postow
jesli jest = 10 to sprawdzam date
jesli data z pliku jest starsza niz data z serwera to ustawiam licznik na to samo IP na 1 i ustawiam nowa date

da sie jakos pobrac date s serwera na ktorym jest skrypt?

czy moze lepiej to jakos zrobic na bazie danych , ale ja sie na razie na bazie nie znam :(

0

da sie jakos pobrac date s serwera na ktorym jest skrypt?

http://www.php.net/manual/pl/function.date.php ?

Ogolnie to zamysl dosc ok, oczywiscie mozesz to zrobic na bazie, kewstia gustu. Jesli chodzi o operacje wykonywane o 00:00, to musialbys miec dostep do crona, w innym wypadku wystarczy sprawdzic godzine przy wywolaniu skryptu i odpowiednio zareagowac.

0

jeśli konto ma 10 kredytów i miną dwa dni to ma mieć 30 kredytów ? bo jak tak to ciężej będzie a jak nie to bułka z margaryną (nie lubię masła). A nawet jakby miało być 30 kredytów to wystarczy że wykorzystać połączenie klienta żeby przy wywołaniu przez niego skryptu żeby baza sie aktualizowała i zobaczyła ile dni minęło i tyle "kredytów" dodawało. Ogólnie do tego wystarczy podstawowy kurs PHP.

0

Ja tylko Ci zwrócę uwagę, że rozróżnianie użytkowników po adresie IP, może być niewystarczające w przypadku gdy dwóch userów z grupy łączy się z tego samego adresu, np. podpięci przez tą samą kawiarenkę internetowa. Poza tym problemem będzie gdy ktoś odwiedza Twoją stronę z różnych adresów IP np. Dom, uczelnia i praca.
Jak już chcesz limitować wiadomości, to lepiej po ID użytkownika którego masz gdzieś w bazie.
I wtedy masz tabelę czy plik o takiej strukturze:
|ID uzytkownika|liczba postow| Data
1 10 2004-08-03

I jak user wchodzi to sprawdzasz w tabeli jego ID, poczym porównujesz pole Data z datą dzisiejszą, jeżeli są takie same, to sprawdzasz liczbę postów jeżeli jest większa lub równa 1 to zapisujesz post, następnie odejmujesz 1 od liczby postów i wstawiasz datę dodania. Jeżeli liczba postów jest równa 0 to nie pozwalasz zapisać.

Jeżeli daty są inne to masz dwa wyjścia zaleznie jak chcesz to rozwiązać czy user może tylko 10 dziennie czy mu się ilość kumuluje.

Jeżeli się nie kumuluje, to wstawiasz za liczbę postów 10 i postępujesz jak wyżej.
Jeżeli ma się kumulować to "odejmujesz" od siebie daty i za liczbę postów wstawiasz wartość: "liczba postów z tabeli" + [("zakres jaki ci wyjdzie po odjęciu dat" - 1) * 10]
Zakres dlatego pomniejszony o jeden, że dane z tego dnia masz już w tabeli czyli może być to 10 albo 0, albo cyfra z przedziału 1-9.
I to tyle ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1