Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Anti Flood, Nie kasuje wpisów po określonym czasie :(
grzesiek25
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


Mam taki o to skrypt anty "floodowy"
  1. <?php
  2. if (!isset($_SESSION)) {
  3. }
  4. if($_SESSION['last_session_request'] > time() - 3){
  5. $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  6. if ($ip == "") $ip = $_SERVER["REMOTE_ADDR"];
  7. $db = mysql_connect ("localhost", "login", "hasło");
  8. mysql_select_db ("baza");
  9. mysql_query("INSERT INTO antyflood (IP, TIME) VALUES ('$ip', NOW())");
  10. $timeout = 30; // minutes
  11. $cutoff = (mktime()-($timeout*60));
  12. $query = "DELETE FROM antyflood WHERE TIME < " . $cutoff;
  13. $resuly = mysql_query($query);
  14. }
  15. $_SESSION['last_session_request'] = time();
  16. ?>


Problem z nim polega na tym że nie kasuje wpisu automatycznie po tych 30 minutach, jest na to jakaś rada ?
wiele sposobów przetestowałem i bez rezultatu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
grzesiek25
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


Niestety podane przez was metody nie działają.
Go to the top of the page
+Quote Post
be2k
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


Cytat(grzesiek25 @ 28.05.2008, 13:49:14 ) *
Niestety podane przez was metody nie działają.


a sprawdzasz to w jakikolwiek sposob? jak wygladaja rekordy w bazie?
jak wyglada zapytanie ktore wykonujesz aby usunac rekordy (echo())?
jestes pewny ze to zapytanie sie poprawnie wykonuje?
moze mysql zwraca jakis blad a ty o tym nie wiesz bo nawet tego nie sprawdzasz?
Go to the top of the page
+Quote Post
grzesiek25
post
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


Cytat(be2k @ 28.05.2008, 13:56:42 ) *
a sprawdzasz to w jakikolwiek sposob? jak wygladaja rekordy w bazie?
jak wyglada zapytanie ktore wykonujesz aby usunac rekordy (echo())?
jestes pewny ze to zapytanie sie poprawnie wykonuje?
moze mysql zwraca jakis blad a ty o tym nie wiesz bo nawet tego nie sprawdzasz?


Zapytanie dodające wpis do bazy wykonuje się poprawnie
w bazie wygląda to tak
IP xx.xx.xx.xx
TIME 2008-5-28 14:00:27
zapytanie kasujące rekordy to

  1. <?php
  2. DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'";
  3. ?>


włącze pełny error reporting i może czegoś więcej sie dowiem
Go to the top of the page
+Quote Post
be2k
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


Cytat(grzesiek25 @ 28.05.2008, 14:06:04 ) *
  1. <?php
  2. DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'";
  3. ?>

chodzilo mi o to zebys wyswietlil to zapytanie, czyli echo("DELETE FROM...") zeby zobaczyc jak wyglada z wartoscia zmiennej ktora tam wstawiasz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
grzesiek25
post
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


Cytat(be2k @ 28.05.2008, 14:10:59 ) *
chodzilo mi o to zebys wyswietlil to zapytanie, czyli echo("DELETE FROM...") zeby zobaczyc jak wyglada z wartoscia zmiennej ktora tam wstawiasz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


To zapytanie wyświetla mi error

Parse error: syntax error, unexpected T_ECHO

próbowałem tak
  1. <?php
  2. $query = echo "DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'";
  3. i
  4. $query = echo ("DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'");
  5. ?>

w obu przypadkach ten sam błąd
Go to the top of the page
+Quote Post
be2k
post
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


Cytat(grzesiek25 @ 28.05.2008, 14:18:36 ) *
To zapytanie wyświetla mi error

Parse error: syntax error, unexpected T_ECHO

próbowałem tak
  1. <?php
  2. $query = echo "DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'";
  3. i
  4. $query = echo ("DELETE FROM antyflood WHERE TIME < '" . $cutoff . "'");
  5. ?>

w obu przypadkach ten sam błąd


chlopie! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wklej tutaj wynik funkcji echo "DELETE FROM..."
podstawy, podstawy, podstawy...
Go to the top of the page
+Quote Post
grzesiek25
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.02.2008

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


Cytat(be2k @ 28.05.2008, 14:39:43 ) *
chlopie! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wklej tutaj wynik funkcji echo "DELETE FROM..."
podstawy, podstawy, podstawy...


oto on
  1. <?php
  2. DELETE FROM antyflood WHERE TIME < '2008-05-28 14:12:27'
  3. ?>
Go to the top of the page
+Quote Post
be2k
post
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


Cytat(grzesiek25 @ 28.05.2008, 14:48:55 ) *
oto on
  1. <?php
  2. DELETE FROM antyflood WHERE TIME < '2008-05-28 14:12:27'
  3. ?>


i co, to nie dziala?
jak wersje mysl'a uzywasz? u mnie na 5.0.22 to dziala.
wez wstaw sobie przykladowy rekord w tej tabeli z data mniejsza od np. tej co powyzej i wywolaj to zapytanie. to musi dzialac.

pozatym twoja struktura tabeli jest bledna bo po co IP jest typu char o rozmiarze 32 - widziales kiedys IP tylu znakowy.
druga sprawda to bledem jest to, ze to pole jest kluczem glownym, bo zapisujesz do tej tabeli IP ktore na pewno juz w niej wystepuje.
Go to the top of the page
+Quote Post

Posty w temacie
- grzesiek25   Anti Flood   28.05.2008, 01:49:17
- - be2k   taki krotki skrypt i tyle bledow po pierwsze: [P...   28.05.2008, 10:16:32
- - grzesiek25   Pokombinowałem troche nad tym kodem i zmieniłem fu...   28.05.2008, 11:03:24
- - nithajasz   ... i teraz odejmujesz (2008-05-28 12:14:15 - 1800...   28.05.2008, 11:17:37
- - grzesiek25   Nie wiem czy dobrze to poskładałem, wygl...   28.05.2008, 11:42:19
- - nithajasz   Zamień funkcję now() na time() i powinno być dobrz...   28.05.2008, 11:47:54
|- - grzesiek25   Cytat(nithajasz @ 28.05.2008, 12:47:5...   28.05.2008, 11:59:02
- - nithajasz   [PHP] pobierz, plaintext <?phpsession_start...   28.05.2008, 12:28:19
- - be2k   jak nie wiesz dlaczego cos nie dziala to debuguj, ...   28.05.2008, 12:30:00
|- - nithajasz   [quote name='be2k' date='28.05.2008, 1...   28.05.2008, 12:34:59
|- - be2k   Cytat(nithajasz @ 28.05.2008, 13:34:5...   28.05.2008, 12:43:01
|- - nithajasz   Cytat(be2k @ 28.05.2008, 13:43:01 ) n...   28.05.2008, 12:55:43
- - grzesiek25   Niestety podane przez was metody nie działają.   28.05.2008, 12:49:14
|- - be2k   Cytat(grzesiek25 @ 28.05.2008, 13:49...   28.05.2008, 12:56:42
|- - grzesiek25   Cytat(be2k @ 28.05.2008, 13:56:42 ) a...   28.05.2008, 13:06:04
|- - be2k   Cytat(grzesiek25 @ 28.05.2008, 14:06...   28.05.2008, 13:10:59
|- - grzesiek25   Cytat(be2k @ 28.05.2008, 14:10:59 ) c...   28.05.2008, 13:18:36
|- - be2k   Cytat(grzesiek25 @ 28.05.2008, 14:18...   28.05.2008, 13:39:43
|- - grzesiek25   Cytat(be2k @ 28.05.2008, 14:39:43 ) c...   28.05.2008, 13:48:55
|- - be2k   Cytat(grzesiek25 @ 28.05.2008, 14:48...   28.05.2008, 14:05:52
|- - grzesiek25   Cytat(be2k @ 28.05.2008, 15:05:52 ) i...   28.05.2008, 14:54:44
- - em1X   Lepiej pokaż jak wygląda struktura Twojej bazy. Bo...   28.05.2008, 13:26:16
|- - grzesiek25   Cytat(em1X @ 28.05.2008, 14:26:16 ) L...   28.05.2008, 13:34:13
- - nithajasz   Dziwne mi na tej samej wersji działa, aż sprawdził...   28.05.2008, 16:41:34
- - rzymek01   grzesiek25, użyj lepiej timestampa zamiast datetim...   28.05.2008, 22:12:19


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.09.2025 - 12:35