Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarze + antiflood
Forum PHP.pl > Forum > PHP
deha21
Potrzebuję zabezpieczyć komentarze przed robotami/ludźmi którzy będę chcieli wysłać ich za dużo. Powiedzmy, jeden komentarz na 30 sekund. Szukałem ale nie wiele znalazłem.
Teoretycznie wiem jak to zrobić. Pobierać IP oraz date i czas - przechowuję to w bazie. Tylko nie wiem jak poprawnie przerobić to zapytanie: Jeśli to samo IP ma datę i czas mniejszy niż 30 sekund wyskakuje komunikat, że nie może dodać komentarza.
Kiedyś coś podobnego robiłem, trzeba było chyba przekonwertować datę i czas na liczbę unixowa (czy coś takiego winksmiley.jpg ), odjąć od niej odpowiednią wartość odpowiadająca 30 sekundom. Wiem, że miałem z tym ogromne problemy a teraz nie umiem odnaleźć tego skryptu.
No i jeszcze pytanie, czy jakoś inaczej da się zabezpieczyć dodawanie komentarzy?
Pozdrawiam
marcio
Lepiej wyslij cookie na expire = 30sec i mniej zabawy moze mniej skuteczne ale jak ktos bedzie probowal wyslac 100zadan na 1 sec to ci baze zajedzie.

Cytat
No i jeszcze pytanie, czy jakoś inaczej da się zabezpieczyć dodawanie komentarzy?


mysql_real_escape_string() jak dodajesz do bazy przy wyswietlaniu htmlspecialchars(),sprawdzanie dlugosci komentarza etc....

deha21
No własnie z tym mysql_real_escape_string i htmlspecialchars jest trochę problem. Bo takie znaczniki jak <a href="#">blabla</a> mi się pokazują jako linki. A tego bym nie chciał.
Dodatkowo cudzysłowy wyświetla jako \" , tego też chciałbym uniknąć bo użytkownik może będzie chciał sobie cudzysłowy użyć. Jest na to jakiś sposób? Póki co używam htmlspecialchars przy zapisywaniu do bazy i działa tak jak chcę ale czy jest to bezpieczne?
emtiej
http://segfaultlabs.com/files/pdf/php-wali...filtrowanie.pdf - na 3 stronie masz zestaw funkcji, które przydają się do walidacji danych wejściowych, linki w komentarzach też można usunąć, możesz też mieszać te funkcje ze sobą
deha21
emtiej dzięki, poczytam.

Ktoś pomoże mi z ciastkami?
Przy dodawniu komentarze mam:
  1. setcookie("last", "", time()+30);


Sprawdzanie:
  1. if (isset($_COOKIE['last'])) {
  2. echo "Następną wiadomość możesz wysłać za 30 sekund";
  3. } else {
  4. //dodanie komentarza
  5. // dodanie ciastka
  6. }
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.