Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Upload plików
Forum PHP.pl > Forum > Przedszkole
Twist
Witam! Mam na stronie skrypt ktory sprawdza isset($_SESSION['login']) i jesli tak to wyswietlaformularz uploadu. Jak zebezpieczyć skrypt przed floodem? Niech każdy user ma przydzielony limit np. 5 uploadów dziennie. Wtedy do bazy dodałbym pole "uploadcount" i default 5. Przy kazdym uploadzie zmniejszałaby się o 1. OK, ale jakw takim przypadku zrobic automatyczne "przyjmowanie wartosci domyślnej" po 24h? Moze sa jakieś prostsze/ciekawsze rozwiązania?
bregovic
Ja bym dodał pole upload_date i sprawdzał czy data jest dniem dzisiejszym. Jeśli nie, to wyzerowałbym licznik. Tak jest chyba najprościej.
bliitz
Cytat(bregovic @ 5.11.2008, 10:17:32 ) *
Ja bym dodał pole upload_date i sprawdzał czy data jest dniem dzisiejszym. Jeśli nie, to wyzerowałbym licznik. Tak jest chyba najprościej.


Jeśli użytkownik ma 24h to ten pomysł się nie sprawdzi bo mógłby wysłać pierwszy plik o 16, chyba że ma nie 24h a jeden dzień.
bregovic
Ok, fakt, to był klasyczny przykład brain-freeze z mojej strony. Ale można to wciąrz rozwiązać w podobny sposób. Pole upload_date zawierający albo PHP'owski timestamp albo datetime, i update'ujesz je tylko jeśli update_time+24h < teraz. Pseudokod:
Kod
if user[upload_count] < 5
    // upload ok
    // upload_count ++
elseif user[upload_date] + 24h < now
    // upload ok
    // set upload_count = 1
    // set upload_date = now
else
    // upload not ok.
Pilsener
Zależy, co rozumiesz przez ten flood - czy to ma być zabezpieczenie przed wysyłaniem dużej liczby plików czy dużego rozmiaru plików? Czy wystarczy zwykłe zabezpieczenie formularza przed F5? Ja bym dodał limit rozmiaru na jednostkę czasu, np. 2MB na godzinę - ale to już od Ciebie zależy. Może być kilka ograniczeń - np. nie więcej niż 2MB na godzinę i 10 plików.
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.