Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Anty-flood na szybkie klikanie
Looozak
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.04.2010
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Witam. Stworzyłem sobie antyflooda przy dodawaniu komentarzy na 30s. Wygląda on tak:
  1. if($_COOKIE["komentarz"] == 1)
  2. {
  3.  
  4. echo '<center>Odczekaj 30s zanim dodasz następny komentarz...</center><br><hr><br>';
  5.  
  6. }
  7.  
  8. else {
  9. setcookie("komentarz", "1", time()+30);
  10. $zapytanie = 'INSERT INTO komentarze (nick, tresc, data, nr_g) VALUES ("'.$dane1_k.'" , "'.$dane2_k.'" , "'.$dane3_k.'" , "'.$id_get.'")';
  11.  
  12. echo("<center>Twój komentarz został dodany!!!</center>");
  13.  
  14. if(!mysql_query($zapytanie))
  15. {
  16. echo '<pre>'.mysql_error().'</pre>';
  17. }
  18. }


Oczywiście to działa, ale nie blokuje szybkiego klikania. Tzn, wpisujesz treść komentarza i wystarczy tylko kliknąć kilka razy na przycisk dodaj i antyflood nie działa... Szukałem tego w googlach ale jedyne co znalazłem to: http://forum.php.pl/index.php?showtopic=16...&pid=801073 lecz nie do końca to rozumiem. W miejsce //kod wstawiam dodawanie do mysqla a w elsie,np SPAM. I efekt jest taki, że zawsze pokazuje elsa czyli SPAM, w skutek czego nie da sie dodać żadnego komentarza...

Jak mogę rozwiązać swój problem ? Pozdro.

Ten post edytował Looozak 26.12.2010, 19:16:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Looozak
post
Post #2





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.04.2010
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Racja, session_start(); nie bylo ale dodałem i dalej zawsze pokazuje elsa. Jeśli możesz to rzuć okiem na całość:
  1. if (isset($_POST['komentarz']))
  2. {
  3. $dane1_k = $_POST['nick'];
  4. $dane2_k = $_POST['tresc'];
  5. $dane2_k = nl2br($dane2_k);
  6. $dane3_k = date("Y-m-d H:i:s");
  7.  
  8. $dane2_k = strip_tags($dane2_k);
  9.  
  10. if (!isset($_SESSION['anti-flood']) && $_SESSION['anti-flood'] > time() - 15) {
  11. $_SESSION['anti-flood'] = time();
  12.  
  13. if(empty($dane1_k) or empty($dane2_k)) {
  14. echo('<center><t3>Wypełnij formularz do końca!!!</t3></center><hr>');
  15. }
  16. else {
  17.  
  18. $zapytanie = 'INSERT INTO komentarze (nick, tresc, data, nr_g) VALUES ("'.$dane1_k.'" , "'.$dane2_k.'" , "'.$dane3_k.'" , "'.$id_get.'")';
  19.  
  20. echo("<center>Twój komentarz został dodany!!!</center>");
  21.  
  22. if(!mysql_query($zapytanie))
  23. {
  24. echo '<pre>'.mysql_error().'</pre>'; //Na wypadek błędu
  25. }
  26. }} else { echo 'SPAM'; }
  27. }


Troszkę zamotane ale chyba mniej więcej wiadomo... Aha i próbowałem też sesion_start(); na początku całego pliku.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 23:34