Page 2 of 2

Posted: Tue Apr 19, 2011 12:08 am
by alb3rt0
regular expression is the way :smile:

Posted: Tue Apr 19, 2011 12:10 am
by snipershady
Con il redirect...
al posto di echo

Code: Select all

<?php
	$blacklist = array(
		"/93./",
		"/94.36.15.13/",
		"/81.22.34.12/"
	);
	$client = $_SERVER['REMOTE_ADDR'];

	foreach($blacklist as $ip) {
		if(preg_match($ip, $client)) { 
			header("location: http://www.google.com/"); 
			exit();  
		}
	}
?>
<html>
<body>
<p>Ipnonbannato</p>
</html>
</body>

Posted: Tue Apr 19, 2011 1:02 am
by Sarn0!
Errato
$deny = array("93.0.0.0", "1.2.3.4", "3.0.0.0", "10.0.0.0");

Corretto
$deny = array("93.0.0.0", "1.2.3.4", "3.0.0.0", "10.0.0");

in pratica la funzione di genny dice "prendi tutti quelli che contengono questo '10.0.0' " quindi 10.0.0.0 - 10.0.0.1 - 10.0.0.2 - 10.0.0.3 ecc....anche se, però, erroneamente prenderebbe pure 0.10.0.0 - 1.10.0.0 - 2.10.0.0 ecc....

Re:

Posted: Tue Apr 19, 2011 1:27 am
by hooah!!!
Sarn0! wrote:Errato
$deny = array("93.0.0.0", "1.2.3.4", "3.0.0.0", "10.0.0.0");

Corretto
$deny = array("93.0.0.0", "1.2.3.4", "3.0.0.0", "10.0.0");

in pratica la funzione di genny dice "prendi tutti quelli che contengono questo '10.0.0' " quindi 10.0.0.0 - 10.0.0.1 - 10.0.0.2 - 10.0.0.3 ecc....anche se, però, erroneamente prenderebbe pure 0.10.0.0 - 1.10.0.0 - 2.10.0.0 ecc....
Si ineffetti il codice andrebbe potenziato... l'idea però era quella...
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
Molto più banalmente io mi creerei un .htaccess con le subnet/ip che vuoi bannare(soluzione al quanto easy ma comunque professionale)

Code: Select all

order allow,deny
deny from 1.2.3.4
deny from 1.2
deny from 1.2/16
allow from all

Posted: Tue Apr 19, 2011 2:12 am
by snipershady
da htaccess non va bene
perchè devo limitare solo per una pagina specifica gli IP


Gianni, io avevo catto copia/incolla
del testo di Gennuz,
inoltre durante i test avevo cancellato tutti gli IP (a caz)
e messo solo il MIO
(esempio 93.1.2.3) e poi (92.1.2.0) e poi ho provato (92.1.2)

insomma, ho fatto varie prove e non andava MAI

Come ho fatto ora, VA
la funzione preg_match
sembra fare al mio caso

http://it.php.net/manual/en/function.preg-match.php


Code: Select all

    <?php
       $blacklist = array(
          "/93./",
          "/94.36.15.13/",
          "/81.22.34.12/"
       );
       $client = $_SERVER['REMOTE_ADDR'];

       foreach($blacklist as $ip) {
          if(preg_match($ip, $client)) {
             header("location: http://www.google.com/");
             exit(); 
          }
       }
    ?>
    <html>
    <body>
    <p>Ipnonbannato</p>
    </html>
    </body>

Re:

Posted: Tue Apr 19, 2011 8:48 am
by hooah!!!
snipershady wrote: Come ho fatto ora, VA
la funzione preg_match
sembra fare al mio caso

http://it.php.net/manual/en/function.preg-match.php
Grande.
Va be ti può funzionare anche con la stristr...

va bene anche qon questa

Code: Select all

   if(strlen(stristr($client,$ip))>0)
Ma è più corretto quello scritto da te
Però mi sa che anche giocando con l'htaccess puoi proteggere un unico file

Code: Select all

<Files prova.php>
order allow,deny
deny from 1.2.3.4
deny from 1.2
deny from 1.2/16
allow from all
</Files>

Posted: Tue Apr 19, 2011 11:37 am
by TheJackal
Si funziona anche su un unico file specificandone il nome come ha messo nell'esempio gennaro