Hola chicos, estaba un poquitín aburrido (Eran las 11:20) cuando me puse a ver mi perfil para cambiar un par de cosas que no me gustaban y de
repente vi: ultimo acceso, bla bla bla.
Se me ha ocurrido hacer un script que muestre cuando ha sido la ultima vez que un usuario a hecho alguna acción o se ha logeado de nuevo. Lo
primero que necesitamos
es crear un campo en la tabla usuarios llamado tiempo y cuando el usuario se abra una sesion, hacer un update así:
<?php
//Codigo que verifique el usuario
mysql_query("UPDATE usuarios SET tiempo = '".time()."' WHERE usuario = '".$_SESSION['usuario']."'"); // Uso sessiones, pero tu puedes usar cookies.
?>
Una vez que ya tengamos el campo tiempo en la tabla usuarios, vamos a colocar el código donde nos interese que aparezca. Yo lo he hecho un
poquito mas largo de lo que debería hacer pero para que lo entendieras. Tu puedes hacerlo mas breve comiendote los espacios o lo que veas.
time.php
<?php
session_start();
// Tutorial hecho por Siquillote para PHPeros.net.
include("conectar.php");
$my_sql = mysql_fetch_object(mysql_query("SELECT * FROM usuarios WHERE usuario = '".$_SESSION['usuario']."'"));
$time_guardado = $my_sql->tiempo; // Sacamos el valor tiempo de la base de datos.
$time_actual = time(); // Averiguamos el valor time y lo almacenamos en una variable.
$resta = $time_actual - $time_guardado; // La resta entre ambos será el factor clave para averiguar el tiempo de inactividad.
$redondear_minutos = round($resta/60); // Con round() lo que hago es redondear el valor que serán los minutos
$redondear_horas = round(($redondear_minutos)/60); // Los mismo pero en horas
$redondear_dias = round(($redondear_horas)/24); // Con dias
$n = array("60","120","3600","86400","604800","2119200","29030400"); // Guardo el valor equidistante de 1minuto, 2 minutos, 1H, 1día, 1 semana, 1mes y 1 año en una variable array.
if($time_guardado and is_numeric($time_guardado)){ // Si el valor de la base de datos existe y es numerico...
if($resta <= $n[6] and $resta > 0){ // Y si la variable resta es menor o igual a $n[6] (29030400) que seía 1 año.
if($resta < $n[0]){
echo 'El usuario fué visto por ultima vez cerca de 1 minuto. Aproximadamente, '.$resta.' segundos';
} elseif($resta > $n[0] && $resta <= $n[1]){
echo 'El usuario fué visto por ultima vez cerca de 2 minutos. Aproximadamente, 1 minuto y algunos segundos';
} elseif($resta > $n[1] && $resta <= $n[2]){
echo 'El usuario fué visto por ultima vez cerca de 1 Hora. Aproximadamente, '.$redondear_minutos.' minutos';
} elseif($resta > $n[2] && $resta <= $n[3]){
echo 'El usuario fué visto por ultima vez cerca de 1 día. Aproximadamente, '.$redondear_horas.'H';
} elseif($resta > $n[3] && $resta <= $n[4]){
echo 'El usuario fué visto por ultima vez cerca de 7 días. Aproximadamente, '.$redondear_dias.' dias';
} elseif($resta > $n[4] && $resta <= $n[5]){
echo 'El usuario fué visto por ultima vez aproximadamente de 1 mes.';
} elseif($resta > $n[5] && $resta <= $n[6]){
echo 'El usuario fué visto por ultima vez aproximadamente de 1 año.';
}
} else {
echo 'El tiempo escogido supera los limites para este script o el numero escogido no es numero o dicho no puede ser menor a '.time().' ,
disculpe las molestias'; // Si el valor es mayor a un año muestra este error.
}
} else {
echo 'Ha ocurrido un error al verificar el valor de la base de datos.'; // Si no existe un dato o no es numerico....
}
echo '<br><br> <b>Time() actual:</b> '.$time_actual.'<br><b>Time del usuario:</b> '.$time_guardado.'<br><b>Fecha: '.date("d-m-Y").'</b>';
?>
Bueno pues eso es todo, de momento lo he hecho con esos valores pero si quereis mas, me lo decís y añado mas

. ¡Hasta la proxima!. Espero
que os haya servido de algo este tutorial y hayais ampliado vuestros conocimientos

.