![]() |
![]() |
![]()
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"
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
taki krotki skrypt i tyle bledow
![]() po pierwsze:
to jest bez sensu, bo zawsze if bedzie spelniony. Dopoki nie wystartujesz z sesja, nie bedziesz mial zadnych zmiennych sesyjnych. po drugie:
pobiera ip uzytkownika jesli ten laczy sie przez proxy, a ze nie zawsze tak jest to powinienes sprawdzac czy jest ta zmienna, a jesli jej nie ma to brac ip z
btw. testowales to u siebie lokalnie i Ci dzialalo pobieranie IP ![]() po trzecie, porownaj sobie jak wyglada zmienna:
a co zwraca mysql'owy NOW(), zobaczysz ze 'delikatnie' sie roznia... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pokombinowałem troche nad tym kodem i zmieniłem funkcje mktime na taką w jakiej zapisuje prawidłowo datę i czas czyli teraz wygląda tak samo jak funkcja NOW()
dodałem taki kod
jednak dalej bez efektów... PS. pobieranie IP działa mi bez zarzutu, dodawanie wpisu do bazy po wystąpieniu floodu również gdy nastąpi ponad 3 zapytania na sekundę, jedyny problem to usuwanie wpisów które są już w bazie od 30 minut |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
... i teraz odejmujesz (2008-05-28 12:14:15 - 1800) widzisz w tym sens?
Zmień to na :
i w zależności jak masz zapisaną w bazie pozycję antyflood to albo odejmuj od razu lub jeśli masz format datatime to sobie dodaj ta linijkę przed zapytaniem:
Ten post edytował nithajasz 28.05.2008, 11:17:59 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy dobrze to poskładałem, wygląda to w ten sposób
PS. format czasu w bazie to DATETIME jednak teraz pojawia się błąd Fatal error: Call to undefined function now() Ten post edytował grzesiek25 28.05.2008, 11:43:45 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zamień funkcję now() na time() i powinno być dobrze..
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Powinno działać.. Ale jak nie będzie to pisz bo to przerabiane tak na szybko. Ogólnie to ja bym zrezygnował z pola datetime i zmienił je na timestamp jakoś łatwiej się operuje na nim. Ten post edytował nithajasz 28.05.2008, 12:33:15 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
jak nie wiesz dlaczego cos nie dziala to debuguj, wyswietlaj bledy itp to naprawde pomaga.
prawdopodobnie nie kasuje ci rekordow bo masz bledne zapytanie, dodaj apostrofy:
i wywal to:
a zostaw samo:
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[quote name='be2k' date='28.05.2008, 13:30:00 ' post='476300']
jak nie wiesz dlaczego cos nie dziala to debuguj, wyswietlaj bledy itp to naprawde pomaga. prawdopodobnie nie kasuje ci rekordow bo masz bledne zapytanie, dodaj apostrofy:
To zapytanie i tak nie pójdzie jak chcesz porównać string do liczby? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
To zapytanie i tak nie pójdzie jak chcesz porównać string do liczby? nie string do liczby tylko string do stringa przeciez w kodzie ma:
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety podane przez was metody nie działają.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
nie string do liczby tylko string do stringa przeciez w kodzie ma:
Fakt, coś mi się pomerdało ![]() Ten post edytował nithajasz 28.05.2008, 12:56:08 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
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
włącze pełny error reporting i może czegoś więcej sie dowiem |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
chodzilo mi o to zebys wyswietlil to zapytanie, czyli echo("DELETE FROM...") zeby zobaczyc jak wyglada z wartoscia zmiennej ktora tam wstawiasz ![]() To zapytanie wyświetla mi error Parse error: syntax error, unexpected T_ECHO próbowałem tak
w obu przypadkach ten sam błąd |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Lepiej pokaż jak wygląda struktura Twojej bazy. Bo jeżeli time jest typu varchar no ciekaw jestem jak mają działania matematyczne na niej zadziałać. Poza tym nazwy pól lepiej owijać w cudzysłów, bo słowo time może być słowem kluczowym w starszych wersjach.
Ten post edytował em1X 28.05.2008, 13:27:00 -------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Lepiej pokaż jak wygląda struktura Twojej bazy. Bo jeżeli time jest typu varchar no ciekaw jestem jak mają działania matematyczne na niej zadziałać. Poza tym nazwy pól lepiej owijać w cudzysłów, bo słowo time może być słowem kluczowym w starszych wersjach.
tak wygląda tabelka
przy twoim kodzie TIME nie powinno mieć przypadkiem ustawionego samego typu time ? |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 2 Dołączył: 14.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
To zapytanie wyświetla mi error Parse error: syntax error, unexpected T_ECHO próbowałem tak
w obu przypadkach ten sam błąd chlopie! ![]() podstawy, podstawy, podstawy... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 22:29 |