micha12344
8.04.2010, 07:34:55
Mam takie pytanie... mam kilka kont zwykłych userów i moje konto admina, wszyscy mogą wywoływać skrypty znajdujące się na serwerze, i chciałbym to ograniczyć tak aby np każdy zwykły użytkownik mógł np tylko 5 razy w miesiącu wywołać mój skrypt... myślałem żeby zrobić bazę z użytkownikami i zliczać ich logowania na serwer ale to do końca nie jest za dobry sposób...
Może jest jakiś inny sposób jak się za to zabrać? Pomożecie?
zordon
8.04.2010, 08:22:36
chyba najprościej w bazie dodać pole, które będzie przy każdym uruchomieniu skryptu zwiększane o 1, a w przypadku przekroczenia limitu skrypt sie nie odpali...
micha12344
8.04.2010, 09:03:51
chce zrobić coś takiego::
jak to odzwierciedlić w kodzie?
mortus
8.04.2010, 09:22:50
Tworzysz w bazie danych tabelę, w której zapisujesz wywołania skryptów. Może ona wyglądać np. tak:
wywolania [id_wpisu, id_usera, nazwa_skryptu, liczba_wywolan]
Skoro uzytkownik jest zalogowany, to znamy jego identyfikator. Po wejściu na daną stronę, która wywołuje wykonanie skryptu wykonujemy:
1. pobieramy dane z tabeli wywolania dla danego usera i podanej nazwy skryptu (znamy ją ponieważ wybraliśmy ten właśnie skrypt),
2a. jeśli nie ma żadnych danych to znaczy, że użytkownik pierwszy raz wywołuje skrypt (zaznaczamy to np. tworząc zmienną $isFirstTime i ustawiając jej wartość na true),
2b. jeśli są jakieś dane, to sprawdzamy, czy liczba wywołań nie przekroczyła z góry określonej wartości:
2b-a. jeśli przekroczyła, to użytkownik dostaje komunikat, że nie może wykonać po raz kolejny tego skryptu i kończymy działanie,
2b-b. jeśli nie przekroczyła to punkt 3,
3. wykonujemy skrypt,
4. sprawdzamy, czy jest ustawiona zmienna $isFirstTime i czy ma ona wartość true:
4a. jeśli tak to wykonujemy INSERT do tabeli wywolania (wszystkie potrzebne dane mamy)
4b. jeśli nie to wykonujemy UPDATE tabeli wywolania zmieniając liczbę wywołań o 1 i kończymy działanie.
micha12344
8.04.2010, 09:37:18
ok zabieram się do roboty, pokaże co mi wyjdzie później:)