Foros del Web » Programando para Internet » PHP »

es posible eliminar una sesión desde otra máquina?

Estas en el tema de es posible eliminar una sesión desde otra máquina? en el foro de PHP en Foros del Web. Hola amigos tengo la siguiente necesidad Deseo eliminar una o más sesiones desde cualquier equipo, la única condición es que el tiempo de las sesiones ...
  #1 (permalink)  
Antiguo 04/03/2006, 10:54
Avatar de elunicode  
Fecha de Ingreso: noviembre-2005
Mensajes: 66
Antigüedad: 12 años
Puntos: 2
es posible eliminar una sesión desde otra máquina?

Hola amigos

tengo la siguiente necesidad

Deseo eliminar una o más sesiones desde cualquier equipo, la única condición es que el tiempo de las sesiones hayan excedido un tiempo preestablecido de 10 minutos. Lo que estoy haciendo lo resumo a continuación:

1. Cada vez que un usuario se loguea almaceno en una base de datos el id de la sesión y la fecha-hora del inicio de la sesión, esto con la finalidad de comparar el tiempo.

2. Cuando algún usuario vuelve a ingresar, realiza una consulta sql, buscando en la base de datos que sesiones han excedido el tiempo establecido.

3. Esta sesiones deben ser eliminadas tanto de la base de datos (con lo cual no he tenido problemas) y también debe eliminar las sesiones y todas sus variables; sin embargo a pesar de que pareciera que las sesiones se eliminar lo cierto es que no sucede.

4. Por ejemplo: supongamos que entró usuario 1 hace 11 minutos y entró usuario 2 hace 0 minutos, al efectuar el proceso anterior debe eliminar la información de la sesión almacenada en la BD del usuario 1 y además destruir su sesión y las variables de su sesión, y cuando usuario 1 trate de realizar alguna acción (recargar o ir a alguna sección de mi web) el sistema debe informarle que su tiempo de sesión ha expirado, etc...

Pero como dije anteriormente este proceso de destrucción de la sesión no está siendo realizada, si alguien ha realizado algo semejante o tiene alguna idea, por favor les agradecería su ayuda...


aquí anexo el código

function control_tiempo_sesion($id)
{
include("datos.php");
$cnx=mysql_connect($hostlocal,$usuario,$password); //conexión a la base de datos
mysql_select_db($base,$cnx); //selección de la base de datos

$id_temp = $id; //asignamos a una variable temporal el id de la sesion
$ahora = date("Y-m-d H:i:s"); //obtenemos la fecha/hora actual
$minutos = 10; //Cambiar aquí los minutos que se desea que dure la sesión

//Buscamos las sesiones que hayan excedido su tiempo de inactividad
$sql = "SELECT * FROM control_sesion ".
"WHERE Fecha_Sesion < DATE_SUB('$ahora',interval $minutos minute)";

//OJO: la consulta anterior está correcta y si está devolviendo filas

$result = @mysql_query($sql,$cnx);
$num_filas = @mysql_num_rows($result);

if ($num_filas > 0) { //la consulta tuvo resultados
//En este bucle se destruyen las sesiones que iniciaron hace x minutos
while ($fila = mysql_fetch_array($result))
{

$id = $fila['Id'];
session_id($id); //asignamos el id del resultado de la consulta a la sesión
session_start($id); //iniciamos la sesión con el id asignado

//OJO: la sesión no está siendo destruida desde otro navegador;

// if (!session_is_registered("Id")) { //determina si la sesion todavía existe
//session_unset(); //eliminamos todas la varibles de la sesion
$_SESSION = array(); //eliminamos todas las variables de la sesion
session_destroy(); //por último destruimos la sesión
// } //fin de (!session_is_registered("Id"))


} //fin de while ($fila = mysql_fetch_array($result))

//Eliminamos los datos de las sesiones que iniciaron hace más x minutos y que están almacenadas en la Base de Datos
$sql = "DELETE FROM control_sesion ".
"WHERE Fecha_Sesion < DATE_SUB('$ahora',interval $minutos minute) AND Cod_Hotel = $c_Hotel";
mysql_query($sql,$cnx);


} //fin de if ($num_filas > 0)

//En caso de que la sesión del usuario haya sido eliminada, informarle que su sesión finalizó debido al tiempo de espera
// if ($num_filas <= 0) {
if (!isset($_SESSION['Id'])){
echo "<br><br>
<table width='90%' height='50%' align = 'center' border='1'>
<tr>
<td align='center' valign='middle'>
<p class = 'linkmaya'>
Ha sobrepasado el tiempo de reservación<br>
Por seguridad nuestro sistema le otorga aproximadamente<br>
$minutos minutos para realizar su petición de reserva.<br>
Le suplicamos volver a realizar su reservación nuevamente</p>
<br>
<p>
<input name='cerrar' type='button' value='Cerrar Ventana' onClick='window.close()'>
</p>
</td>
</tr>
</table>
<script language='javascript'>
reajustar;
</script>
";
exit;
}

} //fin de function control_sesion($id)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:24.