Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czasowe bany
DarkItachiPL
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 26.06.2008

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


Witam... chciałem zrobić skrypt który po insercie z datą przyspieszoną o godzinę sprawdzał czy już godzina minęła, jeśli tak usuwał by bana... Skonstruowałem takie coś, ale nie działa, ponieważ usuwa zawsze bana ;/
  1. <?php
  2. //---
  3. $d = date("d");
  4. $m = date("m");
  5. $y = date("y");
  6. $h = date("H");
  7. $i = date("i");
  8. $s = date("s");
  9. //---
  10. $data = $h.$m.$y.$h.$i.$s;
  11. $h++;
  12. $dataa = $h.$m.$y.$h.$i.$s;;
  13.  
  14. $sql = "SELECT * FROM banned WHERE ip = '$ip'";
  15. $result = mysql_db_query($db,$sql) or die(mysql_error());
  16. if ($row=mysql_fetch_row($result)) {
  17. if ($data >= $row[1]) {
  18. $sql = "DELETE FROM banned WHERE ip='$ip'";
  19. $result = mysql_db_query($db,$sql) or die(mysql_error());
  20. }
  21. }
  22. ?>
Go to the top of the page
+Quote Post
klocu
post
Post #2





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

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


Zakręciłeś i to dla mnie zdrowo.
Wstawiasz do bazy do pola formatu datetime datę wygaśnięcia blokady dostępu do konta tak?
To jakim problemem potem jest wywołanie zwykłego kodu:
  1. <?php
  2. mysql_query( 'DELETE FROM banned WHERE ip="'. $ip .'" and pole_z_Twoja_data <= "'. date('Y-m-d H:i:s') .'";' );
  3. ?>


Taką metodą jaką chciałeś generować datę to się można zabić jak tępym nożem.
Optymalizuj połączenia, po co masz je wyciągać i sprawdzać, niech baza się tym zajmie i nie zwraca Ci czegoś czego tak naprawdę nie potrzebujesz.

Dobrze skierowałem mój tok myślenia?

A nawet zobacz: wyszukujesz te rekordy, wyciągasz ich ID a potem wywalasz WSZYSTKIE bany dla danego ip. bez sensu nie? już wiesz gdzie leży błąd? nie może nie usuwać bana bo to mu właśnie każesz, jeśli już to wyrzucaj po ID rekordu (choć to też bez sensu nie?)

Ten post edytował klocu 21.07.2008, 13:32:13
Go to the top of the page
+Quote Post
DarkItachiPL
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 26.06.2008

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


mam proźbe... napisz mi cały skrypt który będzie po wejściu na stronke dodwał bana, i po wejściu wyświetlał że masz bana, a po 60 minutach odbanuje ;] bo właśnie o zrobienie takiego skryptu mi chodzi
Go to the top of the page
+Quote Post
klocu
post
Post #4





Grupa: Zarejestrowani
Postów: 291
Pomógł: 45
Dołączył: 21.08.2007

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


Napiszę w funkacjach bo nie chce mi się myśleć nad klasą. Sory :]

  1. <?php
  2. function zbanuj( $ip ) {
  3.  
  4. $uchwyt = mysql_query( 'INSERT INTO `tablica_zbanowanych` SET ip = "'. $ip .'", koniec_blokady = "'. date( 'Y-m-d H:i:s', strtotime('+1 hour')) .'";' );
  5. if( $uchwyt ) {
  6. echo 'klient zbanowany ;)';
  7. } else {
  8. echo 'cos poszło nie tak';
  9. }
  10. }
  11.  
  12. function sprawdz( $ip ) {
  13.  
  14. $uchwyt = mysql_query( 'SELECT koniec_blokady FROM `tablica_zbanowanych` WHERE ip = "'. $ip .'" ORDER BY koniec_blokady DESC LIMIT 0, 1;' );
  15. $rzad = mysql_fetch_assoc( $uchwyt );
  16.  
  17. if( $rzad['koniec_blokady'] <> null ) {
  18. echo 'przykro mi masz bana, koniec blokady mija: '. date( 'd-m-Y H:i', strtotime( $rzad['koniec_blokady'] ));
  19. }
  20.  
  21. }
  22.  
  23. function odbanuj( $ip ) {
  24.  
  25. mysql_query( 'DELETE FROM `tablica_zbanowanych` WHERE ip="'. $ip .'" and koniec_blokady <= "'. date('Y-m-d H:i:s') .'";' );
  26.  
  27. }
  28. ?>


struktura tablicy wynika z tego taka:
- id
- ip
- koniec_blokady
typy pól, ich zakres i pojemności stwórz sam. to jest tylko jakiś ogólny zarys jak może to wyglądać.

do tego znajomość tablicy $_SERVER i sprawdzanie ip bądź też ip chowanego za nietransparentnym proxy mile widziana.

uwaga. dodam iż nie tworzyłem tablicy i nie kontrolowałem funkcji. a może temat nadaje się już na gotowe rozwiązania?
jeszcze co do dodawania. bo teraz dodaje wielokrotne bany dla jednego klienta, a możesz select'em sprawdzić czy już jakiś ban istnieje i ew go przedłużyć o kolejną godzinkę. metoda rozwiązania jest dowolna.

Ten post edytował klocu 21.07.2008, 18:59:59
Go to the top of the page
+Quote Post
DarkItachiPL
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 26.06.2008

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


Dzięki!! Działa z tym skryptem na usuwanie!! Very Thanks!! guitar.gif
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 Aktualny czas: 20.08.2025 - 00:27