Autor Tema: [TUTORIAL] Ultima vez visto en la pagina.  (Leído 760 veces)

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
[TUTORIAL] Ultima vez visto en la pagina.
« en: 13 de Agosto de 2010, 13:58:18 pm »
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 = &#39;".time()."&#39; WHERE usuario = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;"); // 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 = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;"));
$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 &
#39;El usuario fué visto por ultima vez cerca de 1 minuto. Aproximadamente, &#39;.$resta.&#39; segundos&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[0] && $resta <= $n[1]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez cerca de 2 minutos. Aproximadamente, 1 minuto y algunos segundos&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[1] && $resta <= $n[2]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez cerca de 1 Hora. Aproximadamente, &#39;.$redondear_minutos.&#39; minutos&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[2] && $resta <= $n[3]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez cerca de 1 día. Aproximadamente, &#39;.$redondear_horas.&#39;H&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[3] && $resta <= $n[4]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez cerca de 7 días. Aproximadamente, &#39;.$redondear_dias.&#39; dias&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[4] && $resta <= $n[5]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez aproximadamente de 1 mes.&#39;;
	
	
	
	
	
	
	
	
} elseif(
$resta $n[5] && $resta <= $n[6]){
	
	
	
	
	
	
	
	
	
echo &
#39;El usuario fué visto por ultima vez aproximadamente de 1 año.&#39;;
	
	
	
	
	
	
	
	
}
	
	
	
	
	
	
	
	
	

	
	
	
	
} else {
	
	
	
	
	
echo &
#39;El tiempo escogido supera los limites para este script o el numero escogido no es numero o dicho no puede ser menor a &#39;.time().&#39; , 
	
	
                    disculpe las molestias&#39;; // Si el valor es mayor a un año muestra este error.
	
	
	
	
}
	
	
	
	

	
	
} else {
	
	
	
echo &
#39;Ha ocurrido un error al verificar el valor de la base de datos.&#39;; // Si no existe un dato o no es numerico....
	
	
}
	
	
	
	


echo &
#39;<br><br> <b>Time() actual:</b> &#39;.$time_actual.&#39;<br><b>Time del usuario:</b> &#39;.$time_guardado.&#39;<br><b>Fecha: &#39;.date("d-m-Y").&#39;</b>&#39;;
?>


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 ;).
« Última modificación: 13 de Agosto de 2010, 21:00:08 pm por Siquillote »

#Fdo. Physlet

Comunidad PHPeros

[TUTORIAL] Ultima vez visto en la pagina.
« en: 13 de Agosto de 2010, 13:58:18 pm »

Desconectado ferdi342

  • PHPero Experto
  • *****
  • Mensajes: 734
  • Karma: 8
  • Sexo: Masculino
  • Gúgol
    • Ver Perfil
    • Google - La solución a todo
Re:[TUTORIAL] Ultima vez visto en la pagina.
« Respuesta #1 en: 13 de Agosto de 2010, 15:06:34 pm »
Interesante y útil! Lo usaré, si no te importa  :P

k+ por supuesto
A veces hay que dejar terminar cosas buenas para que empiecen mejores, How I Met Your Mother

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[TUTORIAL] Ultima vez visto en la pagina.
« Respuesta #2 en: 13 de Agosto de 2010, 15:15:32 pm »

Gracias por el karma ;).

#Fdo. Physlet

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[TUTORIAL] Ultima vez visto en la pagina.
« Respuesta #3 en: 13 de Agosto de 2010, 17:37:26 pm »
Muy bueno, sólo que he encontrado un pequeño error:

mysql_query("UPDATE FROM usuarios SET tiempo = &#39;".time()."&#39; WHERE usuario = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;");

Déjalo así:

mysql_query("UPDATE usuarios SET tiempo = &#39;".time()."&#39; WHERE usuario = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;");

Sólo ese pequeño error tienes :D
Saludos ^^
- Moderador de PHP


Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[TUTORIAL] Ultima vez visto en la pagina.
« Respuesta #4 en: 13 de Agosto de 2010, 20:59:50 pm »
Muy bueno, sólo que he encontrado un pequeño error:

mysql_query("UPDATE FROM usuarios SET tiempo = &#39;".time()."&#39; WHERE usuario = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;");

Déjalo así:

mysql_query("UPDATE usuarios SET tiempo = &#39;".time()."&#39; WHERE usuario = &#39;".$_SESSION[&#39;usuario&#39;]."&#39;");

Sólo ese pequeño error tienes :D
Saludos ^^

Si :$ es la costumbre de hacer tantas consultas con SELECT FROM jajaja.

#Fdo. Physlet