dal 2003, semper fidelis!

BAN ip via PHP

Il luogo dove parlare di informatica.

Moderator: Moderatori

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 :D

Scappo da un cliente!!

perchè sei un nabbo! non mi va nemmeno di spiegarti perchè

tra i vari wildcard operators ho provato anche %

ma kekazz.. c'è qualcosa che sbaglio (come al solito) :asd:
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 :D

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.

genny hai sbagliato a rispondergli....doveva "spandecare".....

stefano prova con la 'condizione FOR'

secondo me ha ragione genny :sisisi: la pensavo esattamente come lui...mi ha anticipato nel rispondere :sisisi:

rofl... glielo stavo spiegando per telefono xD

rimando tutto alla spiegazione di gennaro su questo ciclo if :ciaoasd:

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.

vabbè per quello che deve fare lui penso gli basti anche così

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) :D

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!

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>

infatti il tuo codice NON ha rispettato quanto detto da genny....

Sarn0! wrote:infatti il tuo codice NON ha rispettato quanto detto da genny....

ma se ho fatto copia / incolla ?

Gianni, dammi na mano, al posto di fare il cazzimmosso bastardo! Chespaccimm!!

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();  
		}
	}
?>

Who is online

In total there is 1 user online :: 0 registered, 0 hidden and 1 guest (based on users active over the past 5 minutes)
Most users ever online was 164 on Wed Aug 18, 2021 7:03 pm

Users browsing this forum: No registered users and 1 guest