Ver Mensaje Individual
  #14 (permalink)  
Antiguo 18/07/2009, 15:24
El-FeNiX
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Ayuda con PHP y MySQL =(

La verdad es que no tengo mucha información de como tienes montado el sitio y el sistema de login. Supongo que si tienes una base de datos con modelo relacional sabras modificar esto para que este relacionado con mas tablas.

O si tienes una tabla con cada usuario tambien puedes añadirlo hay.

En la base de datos añades un campo llamado IPs si tienes una tabla ya con los usuarios. Si no pues creas una tabla con el nombre de usuario y las ips.

El campo creo que seria mejor VARCHAR(240) (240/16=15 ips por usuarios como maximo), si no quieres tener limite seria mejor idea crear otra tabla donde cada en cada registro se almacene una unica ip, y creando un nuevo registro por cada IP.

El codigo en php (creado a partir del codigo de pateketrueke)

Código PHP:
$link mysql_connect('direccion base datos''nombre usurio''contraseña usuario');
if (!
$link) {
    die(
'Error al conectar: ' mysql_error());
}

$check mysql_select_db('nombre de la base de datos');

if (!
$check) die('Error al elegir la base de datos');

$query "SELECT IPs FROM <nombredelatabla> WHERE user='$usuario';"
// 1. El nombre de la tabla va sin comillar al ser una consulta SQL.
// 2. La variable $usuario la debes haber inicializado antes con el nombre de usuario o id...
$res mysql_query($query);

if (!
$res) die('La consulta ha fallado: ' mysql_error());

$row mysql_fetch_assoc($res);
$ips $row['IPs']; 

$ip $_SERVER['REMOTE_ADDR']; // el IP

if (!$ips) {
  
$query "INSERT INTO <tu tabla>(IPs) VALUES ('$ip')";
  
$res mysql_query($query);
  if (!
$res) die('Error al inserta la IP por primera vez: ' mysql_error());
}

else {
  
// tenemos separados por un espacio los ultimos IPs
  // en alguna columna de nuestra tabla de usuarios
  
$set explode(' '$ips);
  
  if (
count($set) >= 15) {
    
// Esto comprueba si se ha excedido el limite.
    // Coloca aqui el codigo que se ejecute cuando pase esto
    // si quieres ignorarlo (simplemente no añadira la IP), quita este bloque y cambie el else por este mismo if en negativo: <<if ([B][I][U][SIZE="5"]![/SIZE][/U][/I][/B]count($set) >= 15) >>, o simplemente dejarlo como esta, declarando una variable inservible para evitar un posible error
    
var $sinuso '';
  }
  else {
    if ( ! 
in_array($ip$set))
    {
      
// si el IP no esta en la lista
      // lo agregamos a la cola
      
array_unshift($set$ip);

      
// pegamos de nuevo la lista
      
$ips trim(join(' '$set));
  
      
$query "UPDATE tb_usuarios SET ultimos_ip = '$ips'";
      
$res mysql_query($query);
      if (!
$res) die('Error al añadir la direccion IP al registro: ' mysql_error());
    }  
  }
}
mysql_free_result($res);
mysql_close($link); 
No lo he probado, es posible que tenga fallos, ademas estoy aprediendo PHP, no soy experto ni genio

Estoy es muy general, si lo necesitas mas "especifico" dime los detalles de tu sistema de login y la organizacion de usuarios en la base de datos y lo puedo "adaptar"

Saludos!