Page 1 of 2
BAN ip via PHP
Posted: Mon Apr 18, 2011 3:57 pm
by snipershady
Attraverso questo controllo
ho visto che posso bannare un derminato IP attraverso i comandi PHP
Sapevo che in PHP è possibile usare * per indicare "tutto"
però non so perchè, sembra non funzionare.
Esempio
se inserisco nel campo "array" il MIO ip preciso (esempio 100.0.0.0)
il ban funziona e vengo reindirizzato su google.com
ma se scrivo nel campo array 10.0.0.* oppure 10.0.0.0/24 (per ottetti)
mi compare poi la scritta per gli IP non bannati
Ipnonbannato
Code: Select all
<?php
$deny = array("100.0.0.0", "2.0.0.0", "3.0.0.0");
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://www.google.com/");
exit();
} ?>
<html>
<body>
<p>Ipnonbannato</p>
</html>
</body>
Chi mi aiuta ?
Grazie
Scappo da un cliente!!
Posted: Mon Apr 18, 2011 4:03 pm
by Sarn0!
perchè sei un nabbo! non mi va nemmeno di spiegarti perchè
Posted: Mon Apr 18, 2011 4:05 pm
by snipershady
tra i vari wildcard operators ho provato anche %
ma kekazz.. c'è qualcosa che sbaglio (come al solito)

Re: BAN ip via PHP
Posted: Mon Apr 18, 2011 4:22 pm
by hooah!!!
snipershady wrote:Attraverso questo ciclo IF
ho visto che posso bannare un derminato IP attraverso i comandi PHP
Sapevo che in PHP è possibile usare * per indicare "tutto"
però non so perchè, sembra non funzionare.
Esempio
se inserisco nel campo "array" il MIO ip preciso (esempio 100.0.0.0)
il ban funziona e vengo reindirizzato su google.com
ma se scrivo nel campo array 10.0.0.* oppure 10.0.0.0/24 (per ottetti)
mi compare poi la scritta per gli IP non bannati
Ipnonbannato
Code: Select all
<?php
$deny = array("100.0.0.0", "2.0.0.0", "3.0.0.0");
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://www.google.com/");
exit();
} ?>
<html>
<body>
<p>Ipnonbannato</p>
</html>
</body>
Chi mi aiuta ?
Grazie
Scappo da un cliente!!
Non può mai funzionare perchè quello che devi fare è un confronto tra stringhe.
10.0.0.* sarà sempre diverso di 10.0.0.1 o di 10.0.0.2
quello che puoi fare è se l'ip del visitatore include come sottostringa la subnet che vuoi bloccare es.
tu vuoi bloccare la
10.0.0.* allora nell'array scrivi 10.0.0
ed implementi il controllo
Code: Select all
deny = array("100.0.0.0", "2.0.0.0", "3.0.0.0","10.0.0");
$visitatore = $_SERVER['REMOTE_ADDR'];
$ip_list = explode(",", $deny);
foreach($ip_list as $ip)
{
if(strlen(stristr($visitatore,$ip))>0)
{
header("location: http://www.google.com/");
exit();
}
}
io navigo con
10.0.0.1
lui controlla se 10.0.0 è contenuto in 10.0.0.1 in caso affermativo allora la blocca
P.S: CICLO IF E' STUPENDA.
Posted: Mon Apr 18, 2011 4:27 pm
by Sarn0!
genny hai sbagliato a rispondergli....doveva "spandecare".....
stefano prova con la 'condizione FOR'
Posted: Mon Apr 18, 2011 4:30 pm
by Muchoz
secondo me ha ragione genny

la pensavo esattamente come lui...mi ha anticipato nel rispondere

Posted: Mon Apr 18, 2011 4:48 pm
by TheJackal
rofl... glielo stavo spiegando per telefono xD
rimando tutto alla spiegazione di gennaro su questo ciclo if

Posted: Mon Apr 18, 2011 5:19 pm
by hooah!!!
Si ma è un sistema a dir poco rudimentale per implementare un ACL.
Di solito questi controlli vengono svolti da applicativi (se non addirittura da apparati) ad un livello inferiore.
Posted: Mon Apr 18, 2011 5:47 pm
by TheJackal
vabbè per quello che deve fare lui penso gli basti anche così
Posted: Mon Apr 18, 2011 6:21 pm
by snipershady
brutti, bastardi e cattivi!!
Possibile che se vi chiedo una cosa se non mi smerdate per 10 pagine
non siete contenti??
Genny, fosse per me la implementerei lato rete la gestione delle blacklist, ma per quel che mi serve
basta e avanza il ciclo (if o for che sia)
ora sto da un cliente, dopo provo quel che mi hai scritto tu anche se, leggendolo non capisco una cosa che hai scritto, ma vedo dopo da casa.
Ovviamente VI ringrazio per supporto.
P.s. SARNO.. FAI E BUCCHIN!! SI PROPR' NA CHIAVK!! E Tien a sfaccimm ra cazzimm!
Posted: Mon Apr 18, 2011 10:07 pm
by snipershady
Non va...
ottengo una splendida pagina "bianca"
sia se imposto il MIO ip completo che se non imposto nessun ip che se imposto l'ip a metà
Code: Select all
<?php
$deny = array("93.0.0.0", "1.2.3.4", "3.0.0.0", "10.0.0.0");
$visitatore = $_SERVER['REMOTE_ADDR'];
$ip_list = explode(",", $deny);
foreach($ip_list as $ip)
{
if(strlen(stristr($visitatore,$ip))>0)
{
header("location: http://www.google.com/");
exit();
}
}
} ?>
<html>
<body>
<p>Ipnonbannato</p>
</html>
</body>
Posted: Mon Apr 18, 2011 10:16 pm
by Sarn0!
infatti il tuo codice NON ha rispettato quanto detto da genny....
Posted: Mon Apr 18, 2011 10:21 pm
by snipershady
Sarn0! wrote:infatti il tuo codice NON ha rispettato quanto detto da genny....
ma se ho fatto copia / incolla ?
Posted: Mon Apr 18, 2011 10:24 pm
by snipershady
Gianni, dammi na mano, al posto di fare il cazzimmosso bastardo! Chespaccimm!!
Posted: Tue Apr 19, 2011 12:02 am
by snipershady
forse ho risolto così
con la funzione
preg_match
sembra funzionare... ora provo un po'
(Grazie Alb3rt0)
Code: Select all
<?php
$blacklist = array(
"/94.36.15.15/",
"/94.36.15.13/",
"/81.22.34.12/"
);
$client = $_SERVER['REMOTE_ADDR'];
foreach($blacklist as $ip) {
if(preg_match($ip, $client)) {
echo "<h1>stfu</h1>";
exit();
}
}
?>