Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem [unikatowe pobrania]
Forum PHP.pl > Forum > PHP
tabbi
Witam,

pisze serwis, który będzie umożliwiał ściąganie plików użytkownikowi, jak najłatwiej zaprogramować sprawdzanie ile razy ktoś ściągnął jakiś plik. Chce narzucić ograniczenie 10 ściągnieć w ciągu godziny.

Przy każdym kliku w link tworzyć ciesteczko z okresem przydatności i danym IP potem sumowac te IP w celu sprawdzania, czy lepiej wszystko zapisywać do bazy mysql i tam sprawdzać ilość ściągnięć.

Oczywiście system jest dla niezalogowanych. questionmark.gif Jakieś pomysły jak to najlepiej i wydajnie napisać ?
wookieb
Proszę zmienić nazwę tematu na bardziej opisujący problem
Wilu88
Ciasteczko to nie najlepszy pomysł, gdyż każdy może przecież je usunąć i co wtedy?

Wg. mnie najlepszym rozwiązaniem było by stworzenie pliku pośredniczącego w ściąganiu plików. Metodą GET przekazywałbyś albo nazw pliku a jeszcze lepiej numer id o ile pliki do ściągania masz zapisane jakoś w bazie danych. Następnie robił byś update tabeli w bazie danych w którym zapisywałbyś id użytkownika, data, oraz identyfikator pliku który ściągał. A na koniec za pomocą funkcji header robisz przekierowanie do pliku docelowego.


Oczywiście na samym początku tego skryptu musiałbyś zrobić jeszcze SELECT który sprawdzałby czy istnieją w bazie danych wpisy z id tego użytkownika z ostatniej godziny i czy jest ich mniej niż 10. Jeśli tak to wykonujesz dalszą część.

Edit.

Teraz doczytałem że to ma być dla niezalogowanych. Także tutaj będziesz miał problem z egzekwowaniem limitu ściągnięć. Oczywiście może to być ciastko, może być zapis do bazy danych IP, ale to wszystko łatwo obejść. Chyba że ten limit nie jest jakimś bardzo ważnym elementem twojego projektu.

Ja zawsze tego typu rzeczy rozbijam na dwa rodzaje kontroli:
1 - Mało ważne np. Sondy, Proste głosowania samo ciasteczko
2 - Ważne głosowania w których zależy mi na uczciwym głosowaniu itp - Tylko dla zarejestrowanych użytkowników i tym samym zapis do bazy danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.