Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Banowanie IP.
Frostbourn
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 25.10.2008

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


Dopiero zaczynam cokolwiek pisać w php. Siedze już nad tym 3 dzień, nigdzie nie mogę nic znaleźć.
Otoż mam taki skrypt shoutboxa i próbuje go zmodyfikować tak, żęby po kliknięciu w link dodawało mi adres ip autora postu do pliku zbanowanych ip (bannedips.php) i dodatkowo usuwało tego posta z pliku shouts.php. Niestety dodaje mi ip wszystkich, którzy napisali jakieś posty łącznie ze mną. Pomożecie?

Część kodu, który próbuje zmienić:
  1. <?php
  2. $shouts = file("shouts.php");
  3. $shouts = array_reverse($shouts);
  4. foreach ($shouts as $item){
  5.    if ($row_count == $numshoutsdisplay){
  6.        if ($_REQUEST["viewall"] == true)    echo "<div id='moreshouts' style='display:inline'>";
  7.        else    echo "<div id='moreshouts' style='display:none'>";
  8.        $viewalled = true;
  9.    }
  10.    
  11.    if ($_GET[akcja]=='zbanuj') {
  12.            if($FilePointer = fopen("lists/bannedips.php", "a+")){
  13.            fwrite($FilePointer,"$ip\n");
  14.            fclose($FilePointer);
  15.            }
  16.            echo "<script>location.href='shoutboxadm.php';</script>";
  17.     }
  18.    
  19.    $row = ($row_count % 2) ? "one" : "two";
  20.    list ($poster,$message,$date,$time,$ip) = explode ("|^|", $item);
  21.    $thisnamecolor = "";
  22.    $thisnamecolor = colornames($poster,$thisnamecolor);
  23.    $message=profanityfilter(shoutcode(smilies(killhtml($message))));        
  24.    $thisshout = "<span style='color: $thisnamecolor !important;' class='name'><a href='shoutboxadm.php?akcja=zbanuj'><img src='ban.png' title='Zbanuj to IP:&nbsp; $ip' border='0'></a>$poster</span> $message";
  25.    $thisshout = killscript($thisshout);
  26.    echo "<div class='shout' id='row-$row' title=\"Napisano $date @ $time\">$thisshout</div>";
  27.    $row_count++;
  28. }
  29. ?>


Ten post edytował Frostbourn 23.12.2008, 17:35:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
shoutboxadm.php?akcja=zbanuj

Nigdzie nie przekazujesz, co chcesz konkretnie zbanować, poza tym: skąd Ci się wzięła zmienna $ip?

A banuje wszystkich z racji tego, że skrypt nie sprawdza żadnego innego warunku prócz action=zbanuj.

Ten post edytował erix 23.12.2008, 16:03:20


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
blinki
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 3.11.2008

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


mozesz banowac tez przy uzyciu mysql tworzyc liste banow
Kod
<?
include "jakies_polaczenie.php";
polaczenie();
$ip=$_SERVER['REMOTE_ADDR'];
//i ogien :D
$zap=mysql_query("SELECT * FROM bans WHERE ip='$ip' LIMIT 1");
$row=mysql_fetch_row($zap);
if($row==1)
{
echo "<b>Jestes zbanowany na tym servisie</b>";
}
else
{
//tresc strony
}
?>


a zeby zabnowac

przy wswietlaniu userow robisz cos takiego
9zakladajac ze przy kazdym logowaniu zapisuje sie ip usera
Kod
<?
while($w=mysql_fetch_array($jakies_zapytanie))
{
echo "jakies dane";
if($_SESSION['admin']=='ok')
{
echo "<a href=ban.php?ip=".$w['ip'].">banuj tego usera</a>";
}
echo "jakas dalasz tresc";
}
?>



ban.php
Kod
<?
include "jakies_polaczenie.php";
polaczenie();
if($_SESSION['admin']=='ok')
{
mysql_query("INSERT INTO bans (`ip`) VALUES ('".$_GET['ip']."')";
}
else
{
echo "chyba nie jestes adminem";
}
?>



kod moze zawierac literowki bo jest pisany z glowy

Ten post edytował blinki 23.12.2008, 16:43:05
Go to the top of the page
+Quote Post
Frostbourn
post
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 25.10.2008

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


Dobra to przerasta poki co narazie moje mozliwosci. Tak ze dam sobie spokoj, recznie to bede robil tongue.gif Dzieki i do zamkniecia.
Go to the top of the page
+Quote Post
blinki
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 3.11.2008

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


ale to jest owiele prostrzee nic twoj kod.. biggrin.gif przeanalizuj i pomysl.. pozatym strony w php bez oparcia na bazie danych nie maja zastosowania w tych czasach.. biggrin.gif jesli chcesz zapisywac np hasla w pliku to szybko moze stracic swoja strone.. biggrin.gif
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
pozatym strony w php bez oparcia na bazie danych nie maja zastosowania w tych czasach..

A cache, to co? tongue.gif Pliki ZAWSZE będą szybsze niż baza.

Cytat
jesli chcesz zapisywac np hasla w pliku to szybko moze stracic swoja strone..

Głupoty opowiadasz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
blinki
post
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 3.11.2008

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


moim skromnym zdanie baza jest bardziej bezpieczna smile.gif jakos wole sql smile.gif
Go to the top of the page
+Quote Post
Frostbourn
post
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 25.10.2008

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


  1. <?php
  2. include "../db_connect.php";
  3. polaczenie();
  4. $ip=$_SERVER['REMOTE_ADDR'];
  5. //i ogien biggrin.gif
  6. $zap=mysql_query("SELECT * FROM bans WHERE ip='$ip' LIMIT 1");
  7. $row=mysql_fetch_row($zap);
  8. if($row==1)
  9. {
  10. echo '$bannedmessage';
  11. }
  12.  
  13.  
  14.        
  15. $shouts = file("shouts.php");
  16. $shouts = array_reverse($shouts);
  17. foreach ($shouts as $item){
  18.    if ($row_count == $numshoutsdisplay){
  19.        if ($_REQUEST["viewall"] == true)    echo "<div id='moreshouts' style='display:inline'>";
  20.        else    echo "<div id='moreshouts' style='display:none'>";
  21.        $viewalled = true; //We already displayed the viewall div
  22.    }
  23. $row = ($row_count % 2) ? "one" : "two";
  24.    list ($poster,$message,$date,$time,$ip) = explode ("|^|", $item);
  25.    $thisnamecolor = "";
  26.    $thisnamecolor = colornames($poster,$thisnamecolor);
  27.    $message=profanityfilter(shoutcode(smilies(killhtml($message))));        
  28.    $thisshout = "<span style='color: $thisnamecolor !important;' class='name'>";
  29.    while($w=mysql_fetch_array($jakies_zapytanie))
  30. {
  31. echo "jakies dane";
  32. if($_SESSION['admin']=='ok')
  33. {
  34. echo "<a href=ban.php?ip=".$w['ip']."><img src='ban.png' title='Zbanuj to IP:&nbsp; $ip' border='0'></a>$poster</span> $message";
  35. }
  36. echo "jakas dalasz tresc";
  37. }
  38.  
  39.    $thisshout = killscript($thisshout);
  40.    echo "<div class='shout' id='row-$row' title=\"Napisano $date @ $time\">$thisshout</div>";
  41.    $row_count++;
  42. }
  43. ?>


Tak zrobilem, ale przestałą się wyświetlać zawartość shoutboxa. Jednak wolalbym, zeby mnie ktoś nakierował jak zrobic na plikach.





Zrobiłem tak. Teraz banuje tylko moje ip.

  1. <?php
  2. if ($_GET[akcja]=='zbanuj') {
  3.           if($FilePointer = fopen("lists/bannedips.php", "a+")){
  4.            fwrite($FilePointer,"$_SERVER[REMOTE_ADDR]\n");
  5.            fclose($FilePointer);
  6.            }
  7.            
  8.            echo "<script>location.href='shoutboxadm.php';</script>";
  9.            
  10.        }
  11.        
  12. $shouts = file("shouts.php");
  13. $shouts = array_reverse($shouts);
  14. foreach ($shouts as $item){
  15.    if ($row_count == $numshoutsdisplay){
  16.        if ($_REQUEST["viewall"] == true)    echo "<div id='moreshouts' style='display:inline'>";
  17.        else    echo "<div id='moreshouts' style='display:none'>";
  18.        $viewalled = true; //We already displayed the viewall div
  19.    }
  20.    
  21.    
  22.    
  23.    $row = ($row_count % 2) ? "one" : "two";
  24.    list ($poster,$message,$date,$time,$ip) = explode ("|^|", $item);
  25.    $thisnamecolor = "";
  26.    $thisnamecolor = colornames($poster,$thisnamecolor);
  27.    $message=profanityfilter(shoutcode(smilies(killhtml($message))));        
  28.    $thisshout = "<span style='color: $thisnamecolor !important;' class='name'><a href='shoutboxadm.php?akcja=zbanuj'><img src='ban.png' title='Zbanuj to IP:&nbsp; $ip' border='0'></a>$poster</span> $message";
  29.    $thisshout = killscript($thisshout);
  30.    echo "<div class='shout' id='row-$row' title=\"Napisano $date @ $time\">$thisshout</div>";
  31.    $row_count++;
  32. }
  33. ?>
Go to the top of the page
+Quote Post
blinki
post
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 3.11.2008

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


bo powinienes zrobic zeby np.. jak ktos ostatnio sie logowal na konto zeby w bazie urzytkownikow zapisywalo sie jego ostatnie ip

czyli cos takiego

login.php
Kod
//dodajemy potem jesli login jest udany
mysql_query("UPDATE users SET ip='$ip' WHERE login='".$_POST['login']."' LIMIT 1");


i wtedy powinienes przy uzytkonikach dodac ten kawalek skryptu co ci ostatnio dalem tam jest przeczytaj

Ten post edytował blinki 23.12.2008, 17:44:16
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: 22.08.2025 - 02:48