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!