Con este pequeño tutorial podemos crear un script, este script incluye un pequeño panel de control para añadir y eliminar ips.
El primer paso será crear nuestra tabla que contendrá lo datos que utilizaremos para la correcta ejecución del script.
CREATE TABLE `banned` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(255) NOT NULL default '',
`time` varchar(255) NOT NULL default '',
`long` varchar(255) NOT NULL default '',
`reason` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
En este segundo paso crearemos un archivo de configuración con los parametros básicos del script.
<?php
// config
$config['host'] = "localhost"; // Servidor mysql
$config['user'] = "username"; // usuario mysql
$config['pass'] = "password"; // password mysql
$config['db'] = "database"; // base de datos@mysql_connect("$config[host]","$config[user]","$config[pass]") or die("There was an error connecting to the database, MySql said:<br />".mysql_error()."");
@mysql_select_db("$config[db]") or die("Hubo un error en la conexion de base de datos"");
?>
Ahora que tenemos las variables los datos necesarios para interectuar con la base de datos, necesitamos hacer las funciones que almacenaremos en un archivo llamado func.ban.php:
<?php
// func.ban.php
// chequea si la ip esta baneada
function checkban($ip)
{
// consultas de la base de datos
$q = mysql_query("SELECT * FROM `banned` WHERE `ip` = '$ip' LIMIT 1");
$get = mysql_num_rows($q);
if ($get == "1")
{
// denegar accesos
$r=mysql_fetch_array($q);
die("Tu has sido baneado del sitio hasta $r[legnth]. Si tu crees que esto ha sido provocado por un error por favor contacta con el admnistrador.");
}
}
// agrega una ip baneada
function addban($ip,$reason,$legnth)
{
// get current time
$time = time();
// insertamos en la base de datos
$insert = mysql_query("INSERT INTO `banned` (`ip`,`time`,`long`,`reason`) VALUES ('$ip', '$time', '$legnth', '$reason')") or die("Error.<br />".mysql.error()."");
echo "La direccion ip $ip, ha sido agregada a la lista.";
}
// elimina un registro de la base de datos
function delban($id)
{
$delete = mysql_query("DELETE FROM `banned` WHERE `id` = '$id' LIMIT 1") or die("Could not remove ban.<br />".mysql.error()."");
echo "La direccion ip ha sido eliminada de la lista.";
}
// muestra las direcciones baneadas
function listbans()
{
echo "<a href='banadmin.php?x=add'>Agregar</a><p>";
// bucle para mostrar todas
$query = mysql_query("SELECT * FROM `banned` ORDER BY time DESC");
$num = mysql_num_rows($query);
if ($num)
{
while ($r=mysql_fetch_array($query))
{
echo "$r[ip] - $r[razon] - <a href='banadmin.php?x=delete&id=$r[id]'>Eliminar</a><br />";
}
}
}
?>
Ahora tenemos todas las funciones para nuestro panel de administración y unicamente tendremos que crear la estructura:
<?php
// banadmin.php
// incluir archivos
include "config.php";
include "func.ban.php";
switch ($_GET['x'])
{
default:
listbans();
break;
// si agregamos una direccion mostraremos el formulario
case "add":
// y en caso de que el formulario haya sido enviado crearemos el registro
if ($_POST['add'])
{
$ip = $_POST['ip'];
if (!$ip)
{
echo "Debes poner una Ip al menos";
}
addban($ip,$_POST[reason],$_POST[legnth]);
}
// otra manera de mostrar el formulario
else
{
echo "Agregar direccion baneada.<br />";
echo "<form method='post' action='banadmin.php?x=add'>";
echo "Direccion IP<br /><input type='text' name='ip'><br />";
echo "Razon<br /><input type='text' name='reason'><br />";
echo "Duracion<br /><input type='text' name='legnth'><br />";
echo "<input type='submit' name='add' value='Agregar direccion'>";
}
break;
// eliminar una direccion
case "delete":
if ($_GET['id'])
{
delban($_GET['id']);
}
// show error
else
{
echo "No has seleccionado ninguna ip para eliminar";
}
break;
}
?>
Ahora agrega este pequeño trozo de código a todas aquellas páginas en las que quieres controlar a los usuario baneados:
<?
include "config.php";
include "func.ban.php";
checkban($_SERVER['REMOTE_ADDR']);
?>
Si experimentais algún tipo de error en la ejecución del script comprobad que no hay ningún fallo de tipo tipográfico.
Puedes ver más información sobre este script aquí
Enlaces Relacionados
Seccion Programación (TuFunción)
Tutorial básico de AJAX
Diferencia entre PHP ASP y otros lenguajes de programación
Fácil sistema de autentificación de usuarios (PHP)
Tendencia de los lenguajes de programación
Bases de datos y PHP
Consejos para escribir código Javascript
Perl está muriendo
8 lenguajes de programación que deberías aprender
Escuchando mp3 desde Gmail
5 increibles aplicaciones Javascript
Crear un favicon.ico para tu Web
Fácil sistema de autentificación (login, password) PHP
Llamadas gratis con VoipBuster
Datos de seguridad en contraseñas





fallo
Este codigo tiene fallo
debido a que $r[legnth] no muestra nada
// denegar accesos
$r=mysql_fetch_array($q);
die("Tu has sido baneado del sitio hasta $r[legnth]. Si tu crees que esto ha sido provocado por un error por favor contacta con el admnistrador.");
}
}
// agrega una ip baneada
tendria que ser asi
// denegar accesos
while ($r=mysql_fetch_array($q)){
die("Tu has sido baneado del sitio hasta $r[long] .Si tu crees que esto ha sido provocado por un error por favor contacta con el admnistrador.");
}
}
}
// agrega una ip baneada
Este script funciona si
Este script funciona si pongo un rango de ip?
Por ejemplo si baneo este rango de ip de esta manera:
62.120.2.* o esta manera 62.120.*.*
Un saludo
Con htaccess
Hola
También se puede hacer con el htaccess:
http://www.killersites.com/mvnforum/mvnforum/viewthread?thread=3363
http://www.totalchoicehosting.com/forums/index.php?showtopic=4270
No es seguro
Banear un visitante por su IP no es muy útil, pues cada vez que se reinicia el router cambia la dirección IP.
Yo, por ejemplo, voy con una IP estática pero la mayoría hoy en día son dinámicas y, por lo tanto, no aseguras que el usuario pueda acceder a tu sitio baneando una IP que en algún momento fue suya.
Saludos
me he olvidado...
Solo podría ser útil banear las IP de algún bot de spam, pues mayoritariamente tienen la misma IP.
Si pero...
es verdad que con usuarios no es del todo ultil, pero si hablamos de paginas con gran cantidad de contenido puede ser una herramienta muy util para no permitir que te parseen la pagina, parsear es un metodo muy comun y por el cual te extraen gran parte de la informacion de tu pagina
Enviar un comentario nuevo