Pagina 1 din 1

MASS BAN pe clasa de IP ?

Scris: Sâm Dec 04, 2004 12:11 am
de AgLiAn
Am codul...
[php]
$bmode = 1;
$blockip = array("127.0.0.1");

$mesaj = "<title>IP-ul " . $_SERVER["REMOTE_ADDR"] ." este restrictionat !!!</title><br><br><center><font color=\"red\" size=\"12\"><b>!!! ACCES INTERZIS !!!</b></font></center><br><br>Accesul tau la aceasta pagina este interzis pentru ca:";

$blockmsg = array("" . $mesaj . " <b><u>motiv?</u></b> <br><br><br>",
);

$x = count($blockip);

for ($y = 0; $y < $x; $y++) {
if ($bmode == 1 && $REMOTE_ADDR == $blockip[$y]) {
exit($blockmsg[$y]);
} else if ($bmode == 0 && $REMOTE_ADDR == $blockip[$y]) {
break;
}
}[/php]

ceea ce vreau eu, sa pot sa BAN-ez pe site o intreaga clasa de IP. Daca pun [php]$blockip = array("127.0.0.*");[/php] nu imi ia nici un IP. Sper sa ma poata ajuta cineva.. sa modifice codul sa pot pune doar clasa de IP`uri, sa nu fie nevoie sa scriu fiecare IP in parte.
Have nice day

Scris: Sâm Dec 04, 2004 1:38 am
de arond
Evident, cheia e la $REMOTE_ADDR = $blockip[$y].

Ce e mai interesant e ca n-ai habar de PHP: cum ti-ai imaginat ca punand 127.0.0.* in loc de 127.0.0.1, in codul postat, vei obtine ce doresti ? :)

Si acum, codul:

[php]
/*
Lista adreselor ("clase de adrese" - desi e incorect, clasele de adrese IP inseamna altceva)

Fiecare element din array-ul de mai jos e o expresie regulata (regex) care determina "clasa de adrese" - exemplul este cam ce vroiai tu cu 127.0.0.*
*/
$banned_ips = array(
'127\.0\.0\..*',
);

/*
Dupa executia buclei de mai jos variabila $banned va fi TRUE daca adresa e banned si FALSE daca nu
*/
$banned = false;
foreach ($banned_ips as $banned_ip)
if (preg_match($banned_ip, $REMOTE_ADDR))
{
$banned = true;
break;
}
[/php]

Numa' bune.

[offtopic]
Cred ca ar trebui sa se creeze un nou forum: ceva de genul "Cereri de scripturi" unde ar trebui sa posteze nu cei care vor sa invete ci cei care vor anume scriptuiri.
[/offtopic]