Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie spamerskie..
Forum PHP.pl > Forum > PHP
japek85
Chodzi mi o takie rozwiązanie, że dla serwisu ogłoszeniowego swoje anonse mogą dodać również użytkownicy, którzy nie są zarejestrowani i skrypt, który mi jest potrzebny sprawdzałby, czy przez ostatnie X minut z ostatniego ip było dodane już ogłoszenie...

jeśli TAK to wyświetla: z uwagi na bezpieczeństwo Twój dostęp do funkcji DODAJ OGŁOSZENIE został zablokowany na 10 minut, chcesz korzystać z serwisu bez ograniczeń zarejestruj się...

jeśli NIE: przekierowuje do formularza dodawania ogłoszenia.

Najlepiej jeśli te IP zapisywane byłyby w jakimś pliku tekstowym...

Jeśli ktoś ma jakiś pomysł, lub gotowe rozwiązanie, wdzięczny będę.

Pozdrawiam.
marcio
Sa 3 proste rozwiazania.
1.Cookie z expire 10min
2.plik txt z ip i user agent i czas przy wyswietlaniu sprawdzasz czy istnieje takei ip i user agent w pliku jesli nie to dodajesz w przeciwnym razie nie dodajesz.
3.to samo co wyzej tylko baza danych.

Rozwiazanie nr 2 jest glupie bo z plikami bedziesz musial wiecej kombinowac niz z baza.
Co do 1 to ktos kto sie zna usunie cookie i bedzie mogl spamowac, potem mozna to zawsze zautomatyzowac.
tehaha
Ale TY chcesz się zabezpieczyć przed ludźmi czy botami? bo jak to drugie to wstawi sobie re-captcha
japek85
chodzi mi o zabezpieczenie przed złośliwymi ludźmi
attimo
To daj cookie i po sprawie.
cookie
japek85
Czy mógłbyś pomóc wprowadzić mi to zastosowanie z bazą danych?
Napisać kod, który bym zmodyfikował pod swoje potrzeby?
gothye
wprowadź limit dodawania ogłoszeń na dobę po przez zapis IP usera do bazy ,do ciasteczek ,po za tym przez aktywacje ogłoszenia np po wysłaniu kodu do aktywacji  na email 
altruista2
Struktura bazy:

  1. Tabela: Dodane
  2. Czas - INT
  3. IP - INT
  4. Agent - varchar 6


Funkcja do dodawania:
  1. # zwraca boolean, czy można dodać wpis.
  2. function mozna_dodac() {
  3. $czas = time();
  4. mysql_query("DELETE FROM Dodane WHERE Czas<".($czas-600)); // 600 sekund
  5. $agent = substr(md5($_SERVER['HTTP_USER_AGENT']), 0, 6);
  6. $ip = ip2long($_SERVER["REMOTE_ADDR"]);
  7. if(@mysql_num_rows(mysql_query("SELECT Czas FROM Dodane WHER Agent='$agent' AND IP='$ip' LIMIT 1")) > 0) {
  8. return false;
  9. }else{
  10. mysql_query("INSERT INTO Dodane (Czas,Agent,IP) VALUES ('$czas','$agent','$ip')");
  11. return true;
  12. }
  13. }
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.