Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][MySQL][PHP] Antyflood problem
cabana
post 2.08.2012, 20:50:31
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

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


Witam. Mam skrypt wysyłania pozdrowień i chcę ograniczań ilość wysyłanych pozdrowień w czasie. Do wysyłania pozdrowień stosuję ajax w jQuery oraz PHP. Do bazy dodaję ip usera wysyłającego pozdro oraz czas kiedy może wysłać kolejne. Mój problem polega na tym, że chcę wyświetlać odliczanie kiedy user może wysłać kolejne pozdrowienie.
Przedstawię kawałek kodu:

  1. if (mysql_num_rows($result))
  2. {
  3. $row = mysql_fetch_assoc($result);
  4. $secs = ($row['TIME'] - time());
  5. ?>
  6. <script type="text/javascript">
  7. var seconds = <?php echo $secs; ?>;
  8. function countDown()
  9. {
  10. if (seconds != 0)
  11. {
  12. document.getElementById('displaySeconds').innerHTML = seconds;
  13. seconds--;
  14. setTimeout(countDown, 1000);
  15. }
  16. else
  17. {
  18. document.getElementById('flood').innerHTML = '<font color="green">Możesz już wysłać kolejne pozdrowienie.</font>';
  19. }
  20. }
  21. countDown();
  22. </script>
  23. <?php
  24. echo '<div id="flood"><font color="red">Blokada AntyFloodowa.</font>' .
  25. '<br />Następne pozdrowienie możesz wysłać za <span id="displaySeconds">' . $secs . '</span> sekund.</div>';
  26. }


Problem polega na tym, że jeśli user kliknie jeszcze raz wyślij gdy wyświetlany jest licznik to odliczany czas biegnie 2x szybciej w miarę kliknięć wyślij i nie mam pojęcia jak temu zaradzić.

Ten post edytował cabana 2.08.2012, 21:03:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
YaQzi
post 2.08.2012, 21:46:19
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

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


Możesz np:
- wyznaczać czas korzystając z zegara systemowego uzytkownika zamiast odejmowac od zmiennej po sekundzie,
- odpalać funkcję przez inną funkcję countDownStarter(), która odpali countDown() jesli będzie to jej pierwsze uruchomienie (do zrobienia na booleanie),
- zablokowac możliwość klikania przycisku wyślij jesli ochrona jest aktywna


--------------------
 Wszystkie wielkości świata nie są tyle warte, co dobra przyjaźń...
Go to the top of the page
+Quote Post
cabana
post 2.08.2012, 22:30:05
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 25.05.2010

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


Cytat(YaQzi @ 2.08.2012, 22:46:19 ) *
Możesz np:
- wyznaczać czas korzystając z zegara systemowego uzytkownika zamiast odejmowac od zmiennej po sekundzie,
- odpalać funkcję przez inną funkcję countDownStarter(), która odpali countDown() jesli będzie to jej pierwsze uruchomienie (do zrobienia na booleanie),
- zablokowac możliwość klikania przycisku wyślij jesli ochrona jest aktywna


Całkiem niezły sposób. Oczywiście `Pomógł` dla Ciebie.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:39