Marcofbb Noticias y Artículos Webmasters



Publicidad marcored

Bannear ip con PHP

  • 07/01/2011
  • 9:10 pm
  • marcofbb

Con este code podran bloquear a las personas que les incomodan, banean su ip y el code es sencillo.
Solo hay que colocar las IPs a bloquear el acceso en un array.

Colocar este codigo arriba de todo de la página

< ?php // IP del visitante 
$ip = $_SERVER['REMOTE_ADDR'];
// IP's que vamos a bloquear 
$blocked = array("192.168.1.xx", "192.168.1.xx", "192.168.1.xx"); 
if(in_array($ip,$blocked)){
echo "BANEADO"; // Texto que mostrara si esta baneado
exit;
}
 
/* Aqui el resto de la pagina */
?>

Share

¿Necesitas ayuda? o ¿Asesoramiento webmaster? Registrate en nuestro foro de consultas

Posts Relacionados

Total de Comentarios: 18

Avatar
07/01/2011
10:01 pm

Información Bitacoras.com...

Valora en Bitacoras.com: Con este code podran bloquear a las personas que les incomodan, banean su ip y el code es sencillo. Solo hay que colocar las IPs a bloquear el acceso en un array. Colocar este codigo arriba de todo de la página...

Avatar
07/01/2011
10:42 pm

[...] This post was mentioned on Twitter by Erico Pereyra. Erico Pereyra said: RT @marcofbb: Bannear ip con PHP http://goo.gl/fb/YXQa8 [...]

Avatar
08/01/2011
3:46 pm

buena infoo man lo usaree ,,en mi web

saludos

    Avatar
    08/01/2011
    5:20 pm

    Gracias, igual es solo para mostrar ya que con un proxy o ip dinamica te lo pasan a este baneo, pero es para mostrar maso menos como se hace

Avatar
sr.commando
09/05/2011
1:00 am

oye como le podria modificar a este script para ponerle tiempo por lo menos que diga estas baneado por 24 hrs y asi al siguiente dia ya pueda acceder.

    Avatar
    09/05/2011
    12:00 pm

    Vas a necesitar una base de datos en la cual guarde la IP o el nombre de usuario y la fecha y hora que lo baneaste, también un campo que diga desbaneado

    id|ip o nombre|fecha|baneo|desbaneado
    X|127.0.0.1 |5/5/5;10:40|1hora|false or true

    El funcionamiento seria este: Al banear al usuario se agrega la información a la tabla creada anteriormente, con la fecha que lo baneaste y que cantidad de horas lo baneaste.

    Después haces una suma de la hora que lo baneaste con la cantidad de hora y si la hora actual supera esa suma es que esta desbaneado y donde dice desbaneado se cambiaría a true,

    En la semana publico un tutorial sobre eso ya que el código cambia mucho respecto a este.

Avatar
23/07/2011
1:48 pm

Buenas marcofbb, estoy almacenando las ip en una SQL para que sea mas fácil desde el menu del admin. Pero que debo de hacer para que en lugar de este codigo:
$blocked = array("192.168.1.xx", "192.168.1.xx", "192.168.1.");
Me salga las ips de la sql, he probado a cambiarlo por: $blocked = array("$row_ip['ips']"); pero no me vale, me da error y no se que codigo usar :S

UN saludo y gracias.

Avatar
23/07/2011
6:01 pm

$blocked = array($row_ip['ips']);

Siempre y cuando almacenes las ip en la base de datos así ip1,ip2,ip3

Saludos

Avatar
24/07/2011
9:53 am

Buenas marcofbb, estoy guardando las ip como tipo text y guardando las ip asi:
127.0.0.1,127.0.0.2,
Pero aún asi no me las coge y no me banea, algo me falla y no se que puede ser. Tengo la consulta de "select ip from ip" y en el array
$blocked = array($row_ip['ips']); pero me tira el siguiente error:

Notice: Undefined variable: row_ip in C:\wamp\www\prueba_marcofbb\ip.php on line 4

Un saludo 😉

Avatar
24/07/2011
1:49 pm

y tenes mysql_fetch_Assoc ? y mysql_Query ?

Avatar
24/07/2011
2:16 pm

Creo que si, te dejo mi codigo 😉

http://sharetext.org/AXCY

Y el campo de la SQL lo he llamado ip y de tipo text.

Un saludo 😉

Avatar
24/07/2011
5:08 pm

acordase que la consulta sql tiene que estar antes del comprobante de la ip, osea antes de

$ip = $_SERVER['REMOTE_ADDR'];
// IP's que vamos a bloquear
$blocked = array($row_ip['ip']);
if(in_array($ip,$blocked)){
echo "BANEADO"; // Texto que mostrara si esta baneado
exit;
}

Avatar
24/07/2011
5:43 pm

Perfecto, eres un monstruo 🙂
Me ha funcionado jeje!!

Ahora hay un problemilla, que si pongo una ip me funciona pero cuando meto las siguiente:
"192.168.1.12", "192.168.1.14", "127.0.0.1" ya deja de funcionar, es como si no las viera bien. Hay que cambiar el campo o guardarlo de otro modo?

Un saludo, Luis.

Avatar
24/07/2011
6:04 pm

Lo que pasa es que en localhost, tu ip es 127.0.0.1, lo vas a tener que probar online.

Igual lo mejor es hacer una consulta WHERE y sacar lo de array

Te dejo un tutorial
http://notasweb.com/articulo/php/banear-ip-con-php-y-mysql.html

Avatar
24/07/2011
6:08 pm

EL mismo que usas vos, lo modificas para usar el where con un like y haces

$res = mysql_query("SELECT * FROM ip WHERE ip LIKE '%".$ip."%'");
$numrow = mysql_num_rows($res);
if($numrow){ exit('Usted Esta baneado');

Avatar
25/07/2011
7:23 am

Gracias por la info 😉 me toy acercando pero no doy con el click, exactamente donde pongo esas lineas, es que he cambiado mi consulta sql por esas y añadido esas dos lineas al codigo de bloqueo de la web, pero aún asi no me va :S

Y creo que es porque no lo toy poniendo donde tiene que ser :S

Un saludo 😉

Avatar
25/07/2011
1:38 pm

la consulta tendria que ir debajo de $ip

Avatar
24/10/2011
5:28 pm

[...] > Marcofbb Compartir:Share IP [...]


Enviar Comentario

(*)

(*)