terreska
13.01.2007, 11:35:47
Mam taki kod, co należy zrobić żeby można było banować kilka adresów IP, a nie tylko 1? Bardzo proszę o pomoc.
<?php
$userip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$banip = "11.11.11.11";
if ($userip==$banip)
{
echo 'Twoje IP zostało zablokowane'; }
?>
kriqs
13.01.2007, 11:56:55
<?php
$userip = $_SERVER['REMOTE_ADDR'];
$banip =array('11.11.11.11','27.27.27.27');
foreach( $banip as $ip )
{
if ($userip==$ip)
{
echo 'Twoje IP zostało zablokowane'; }
}
?>
moze nie dzialac

z pamieci napisalem to

.
pozdrawiam
ps.
odpowiedz na twoje pytanie to : "przerobic skrypt"
wipo
13.01.2007, 11:58:49
Zrób tablicę ban_ip=array('127.0.0.1','192.168.1.1'); itd....
a potem sprawdzaj
if (in_array($userip,$ip) ){
//jest w tablicy czyli zabanowany
} else {
//nie ma go w tablicy
}
terreska
13.01.2007, 12:04:47
Dziękuję
Mam teraz tak:
<?php
$userip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$banip=array('11.11.11.11', '123.132.123'); {
echo 'Twoje IP zostało zablokowane'; }
?>
Działa

A teraz kolejna rzecz...
Jak zrobić, aby adresy ip były pobierane z pliku lub z bazy danych?
wipo
13.01.2007, 12:12:56
A zrób tak jak napisałem. Będzie o wiele szybciej i będzie mniej kodu
terreska
13.01.2007, 12:14:05
Już właśnie tak zrobiłam

i liczę na dalszą pomoc
Cysiaczek
13.01.2007, 12:16:58
Plik ipeki.txt (każdy IP w oddzielnej lini)
Kod
213.432.43.212
243.42.324.21
23.445.12.34
Zmiany w kodzie to
<?php
//zamiana
$banip=array('11.11.11.11', '123.132.123'); //na
$banip=file("ipeki.txt"); ?>
Pozdrawiam.
terreska
13.01.2007, 12:57:04
Ta sama zmiana chyba nie wystarczy.
Co jeszcze oprócz tego zmienić?
Cysiaczek
13.01.2007, 13:42:47
Owszem, wystarczy, chyba, że inne rzeczy zepsułaś : ) (do funkcji file() musisz podać nazwę pliku razem ze ścieżką)
Pozdrawiam.
terreska
13.01.2007, 21:09:34
A co z tym:
<?php
?>
?
... no bo mi nie działa, tzn. żaden błąd nie wyskakuje, ale i nie banuje.
Cysiaczek
14.01.2007, 09:39:23
Tzn jak nie banuje?
Zamiast HTTP_SERVER_VARS uzywaj $_SERVER["REMOTE_ADDR"];.
Zresztą - odrobina samodzielności nie zawadzi prawda?
Pozdrawiam.
terreska
14.01.2007, 20:16:25
No nie banuje, jak może banować jak tutaj:
if (in_array($userip,$banip))
sprawdza się tablice a nie plik...?
Sabistik
14.01.2007, 20:27:04
Zacznij używać manuala bo ta rozmowa do niczego nie prowadzi. Zobacz co zwraca
file()" title="Zobacz w manualu php" target="_manual
Cysiaczek
14.01.2007, 20:29:36

? Poczytaj sobie o funkcji
file()
terreska
14.01.2007, 20:30:38
No ok, sory, ale zrobiłam wszystko tak jak napisaliście i nic... ani komunikatu o błędzie ani bana.
Cysiaczek
14.01.2007, 20:57:59
Problem leży w tzw. whitespaces.
Normalnie należy przeiterować całą tablicę i usunąć białe znaki za pomocą funkcji rtrim(). Jednak można tez "na lewo" - dodać znak końca lini.
<?php
?>
Pozdrawiam.
terreska
14.01.2007, 21:23:29
Wielkie dzięki, działa

Teraz jeszcze chciałabym dodać do tego to:
<?php
$replace = array( '*' => '([0-9]{1,3})', '?' => '([0-9]{1})', '.' => '.' ); ?>
Tylko za bardzo nie wiem gdzie to wstawić i czy ta zmienna jest dobrze zadeklarowana w mojej sytuacji?
Sabistik
14.01.2007, 21:40:11
Człowieku zastosuj lepiej jakieś gotowe rozwiązanie
Temat: Banowanie z maskami i
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.