PHP y sus maravillosas SESSIONS

Z

Buenas , estoy haciendo un blog , a medida que aprendo el PHP.

Me gustaria saber un par de cosas :

Como puedo saber si una SESSION esta activa ?
Como podria contar el numero de SESSIONES activas ?

Y ahora un problema con el TIMESTAMP, me gustaria que apareciera el uptime de un usuario.

Eso se haria restando la fecha en que se mira el uptime , con la fecha en que se inicio la SESSION. Pero si resto el el dia de la fecha 2 al de la fecha 1 y hago lo mismo con los minutos , segundos y demas no lo hace bien. Ya que si inicia session el dia 01 a las 23h y miramos el uptime al cabo de 2 horas nos dira que ya ha pasado un dia cosa incorrecta :/

Espero haberme explicado bien :)

Gracias por la ayuda !

Z

Nada ??

E

npi

Z

Bueno ... todavia no lo he podido solucionar ;(

guner

A la primera pregunta, ni idea.
A la segunda, habria una posibilidad, pero habría que usar base de datos. En realidad sería un sistema de usuarios activos...

consistiría en darle a la sesión un nombre (p.eg. el nombre de usuario) y darle un tiempo de caducidad (reo que el máximo eran 24 minutos, si no me equivoco) pues cosistiria en crear uina tabla con dos campos- en uno ponemos el nombre de la sesión, y en el otro el momento en el que ha sido creada o reanudada.

El script en php consisitiría en eliminar las sesiones caducadas, (claro, siempre que se ejecute) además de actualizar la base de datos en la fila con el nombre de la propia sesión, no se si me explico. Ahora estoy en ciber. cuando llegue a casa paso el sript, aunque creo que no funciona bien, para ver la idea vale

Z

Pues es buena idea si , a ver si me puedes pasar el script para aclararme un pelin las ideas :P

Whose

Esto te serviria para borrar la sesion no activa en 5min, puedes modificarlo:

//tiempo de refresco en minutos $tiempo
$tiempo=5; 

//miramos primero si el usuario está activo o no según el tiempo de refresco $tiempo
$ahora = time(); 
$limite = $ahora-$tiempo*60;
//eliminamos todos los usuarios cuyo tiempo de $tiempo está rebasado y no se considera activo
mysql_query("DELETE FROM tabla WHERE fecha < ". $limite);
guner

ahi va

<?
/*

uonline.php

*/

function uonline ()
{
&nbsp; &nbsp; &nbsp; &nbsp;// Definir el momento actual.
$ahora = time();

&nbsp; &nbsp; &nbsp; &nbsp;// Eliminar las sesiones caducadas.
$limite = $ahora-24*60;
$ssql = "DELETE FROM online WHERE temp < ".$limite;
mysql_query($ssql);

&nbsp; &nbsp; &nbsp; &nbsp;$query = "SELECT * FROM online";
&nbsp; &nbsp; &nbsp; &nbsp;echo mysql_affected_rows (mysql_query ($query));
}

function setonline ($id_user)
{
&nbsp; &nbsp; &nbsp; &nbsp;// Definir el moemnto actual.
&nbsp; &nbsp; &nbsp; &nbsp;$ahora = time();

&nbsp; &nbsp; &nbsp; &nbsp;// Comprovamos la sesión 'propia' está registrada
&nbsp; &nbsp; &nbsp; &nbsp;$ssql = "SELECT uid, temp FROM online WHERE uid = '".$uid".'";
&nbsp; &nbsp; &nbsp; &nbsp;$result = mysql_query($ssql);
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (mysql_num_rows($result) != 0)
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{ // Si existe actualizamos el campo temp
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$ssql = "UPDATE online SET temp = ".$ahora." where uid = '$uid'";
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{ // Si no existe insertamos el registro correspondiente a la nueva sesion
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;$ssql = "INSERT INTO online (uid, temp) VALUES ('$uid', $ahora)";
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}

&nbsp; &nbsp; &nbsp; &nbsp;mysql_free_result($result);
}

?>

ahora que me doy cuenta, eso te sirve para las dos preguntas ^^

Z

Anda pues es muy facil minalmente, gracias

Usuarios habituales