Foros del Web » Programando para Internet » PHP »

Como puedo establecer un tiempo para las sessiones?

Estas en el tema de Como puedo establecer un tiempo para las sessiones? en el foro de PHP en Foros del Web. Hola aun soy novato en PHP y quisiera saber como hacer para establecer un tiempo en la sessiones. Trabajo con webs modulares y hago una ...
  #1 (permalink)  
Antiguo 18/07/2005, 16:03
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Como puedo establecer un tiempo para las sessiones?

Hola aun soy novato en PHP y quisiera saber como hacer para establecer un tiempo en la sessiones.

Trabajo con webs modulares y hago una rudimentaria funcion en el index.php, pero no me sirve.

saludos,

Gracias de antemano.
  #2 (permalink)  
Antiguo 18/07/2005, 17:14
 
Fecha de Ingreso: mayo-2003
Mensajes: 148
Antigüedad: 14 años, 6 meses
Puntos: 0
Aqui un ejemplo:

autentificacion.php

<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){
//usuario y contraseña válidos
session_name("loginUsuario");
//asigno un nombre a la sesión para poder guardar diferentes datos
session_start();
// inicio la sesión
$_SESSION["autentificado"]= "SI";
//defino la sesión que demuestra que el usuario está autorizado
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
//defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>


aplicacion.php

<?
//iniciamos la sesión
session_name("loginUsuario");
session_start();

//antes de hacer los cálculos, compruebo que el usuario está logueado
//utilizamos el mismo script que antes
if ($_SESSION["autentificado"] != "SI") {
//si no está logueado lo envío a la página de autentificación
header("Location: index.php");
} else {
//sino, calculamos el tiempo transcurrido
$fechaGuardada = $_SESSION["ultimoAcceso"];
$ahora = date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));

//comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 600) {
//si pasaron 10 minutos o más
session_destroy(); // destruyo la sesión
header("Location: index.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}
?>
  #3 (permalink)  
Antiguo 18/07/2005, 17:20
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Hola gracias por responder.

Ahora unas dudas....

Esto donde lo debo de grabar??

En el Index??
En un modulo??
O debo de crear otro archivo (he visto lo del php.ini, pero no se que es... )
__________________
Mi blog
  #4 (permalink)  
Antiguo 19/07/2005, 06:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 148
Antigüedad: 14 años, 6 meses
Puntos: 0
Fijate que te puse los nombre de los fichero arriba. Primero tienes que tener un formulario que no se si lo tendrás en el index, luego ese lo envia a: autentificación.php y finalmente las páginas que confirmen que tu autentificación es correcta y que por tanto puede iniciar la session con el tiempo previsto es el que te puse aplicacion.php , q es donde tu tengas ya el script que haga el rsto.

También puedes modificarlo en el fichero php.ini que lo puedes editar con wordpad y que lo puedes localizar dándole a buscar en windows.

Espero que te haya servido de ayuda.
  #5 (permalink)  
Antiguo 19/07/2005, 08:40
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Gracias, pero no se naa del php.ini, hay algun lugar como para entenderlo???
__________________
Mi blog
  #6 (permalink)  
Antiguo 19/07/2005, 09:18
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Bueno por ahora no necesito que ingresen a la pagina con codigo, gracias por la ayuda!!! :D
__________________
Mi blog
  #7 (permalink)  
Antiguo 19/07/2005, 15:44
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Hola, gracias por el codigo, lo probe, pero tengo un pequeño problema: Solo se rompe la session cuando actualizo la pagina!. No hay manera de que se haga de manera automática?.

Código PHP:
 //comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 600) {
//si pasaron 10 minutos o más
session_destroy(); // destruyo la sesión
header("Location: index.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;

Probe la pagina asi:

Código PHP:
 //comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 50) {
//tiempo menor para darse cuenta.
echo "<p>YA ES HORA YA ES HORA!!!";
echo 
"<p>pasaron ".$tiempo_transcurrido;
echo 
"<p>fecha guardada: ".$fechaGuardada
echo 
"<p> ahora: ".$ahora;
//sin destruir la session..... :golpeado: 
header("Location: index.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
echo 
"<p>NO PASA NAA!!!";
$_SESSION["ultimoAcceso"] = $ahora;

Y como dije, solo se muestra lo que escribe, actualizando la pagina. Alguna ayuda???? Por favor?????
__________________
Mi blog
  #8 (permalink)  
Antiguo 19/07/2005, 15:57
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Es posible que deba de usar Javascript???

Con la funcion setInterval???

Pero como??
__________________
Mi blog

Última edición por Galled; 19/07/2005 a las 16:20
  #9 (permalink)  
Antiguo 20/07/2005, 00:51
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
no se que te puede pasar.. pero es curioso lo del tiempo de ultimo acceso.. y yo que pensaba guardarlo en la bbdd :p
  #10 (permalink)  
Antiguo 20/07/2005, 15:19
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Estoy probando este script en una pagina:

primera_pagina.php
Código PHP:
<?php
$_SESSION
["ultimoAcceso"]= date("Y-n-j H:i:s");
?>
segunda_pagina.php
Código PHP:

<script language="JavaScript">
function 
llama_borra_todo(){
var 
llamador;
llamador=1;
}
</script>

if($llamador==1)
{borra_todo();}
echo "<p>".$llamador;

function borra_todo(){
$fechaGuardada = strtotime($_SESSION["ultimoAcceso"]);
$ahora = strtotime(date("Y-n-j H:i:s"));
$tiempo_transcurrido = ($ahora-$fechaGuardada);
//comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 50) {
//si pasaron 10 minutos o más
echo "<p>YA ES HORA YA ES HORA!!!";
echo "<p>pasaron ".$tiempo_transcurrido;
echo "<p>fecha guardada: ".$fechaGuardada; 
echo "<p> ahora: ".$ahora;
foreach (glob("tmp/*") as $filename) {
//   Es que quiero borrar todos los archivos generados en esa carpeta cuando se acabe la session ^_^
   unlink($filename);
}
//session_destroy(); // destruyo la sesión
}else {
echo "<p>NO PASA NAA!!!";
$_SESSION["ultimoAcceso"] = $ahora;
}


Primero se ingresa primera_pagina.php y luego a la segunda_pagina.php, pero no sirve de naa. Alquien me puede ayudar???
__________________
Mi blog
  #11 (permalink)  
Antiguo 20/07/2005, 15:36
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
si la sesion se propaga por cookies, no es mas facil establecer el tiempo de la cookie??

no estoy seguro del todo pero esa es la forma correcta me parece.

setcookie(session_name(), "valor", time()+3600, "/");
  #12 (permalink)  
Antiguo 20/07/2005, 15:45
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Lastima!! Es que yo no lo hago con cookies (al menos eso creo ) y quiero hacerlo con sesiones desde el servidor.

Es que en la sesion se producen archivos en un directorio "tmp" y quiero que cuando acabe la sesion se borren estos archivos (que son necesarios para otros usuarios).

Habia puesto un simple session_destroy() cuando ingresaba a otra pagina pero tenia el problema de que: Que tal si alguien esta viendo la pagina (usando los archivos creados en "tmp") y otra persona ingresa a la pagina con el session_destroy()???
__________________
Mi blog

Última edición por Galled; 20/07/2005 a las 16:21
  #13 (permalink)  
Antiguo 20/07/2005, 17:16
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
He buscado en Javascript pero naa (y como le hago ahora???)
__________________
Mi blog
  #14 (permalink)  
Antiguo 21/07/2005, 08:23
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Y con el archivo php.ini se puede??? (como ingreso ???)

Me parece que las variables que defino en Javascript no las lee el php porque?
__________________
Mi blog
  #15 (permalink)  
Antiguo 21/07/2005, 14:47
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
O es que asi no se hace? Es que solo recibe las mandadas por un FORM???
__________________
Mi blog
  #16 (permalink)  
Antiguo 21/07/2005, 19:30
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Pucha y ahora???
__________________
Mi blog
  #17 (permalink)  
Antiguo 25/07/2005, 17:13
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Alguien podría ayudarme??? Aún no puedo solucionarlo.............
__________________
Mi blog
  #18 (permalink)  
Antiguo 25/07/2005, 17:28
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Siempre he visto que la forma de cerrar una sesion es colocar un boton o un link que nos lleve a una pagina que ejecute session_destroy(), no hay otra manera.
Por defecto la cookie que se crea en tmp se destruye al cerrar el navegador, o al menos queda marcada para tal efecto y depende de php.ini su tiempo de destruccion.
Cada vez que ingresa alguien se crea una sesion nueva y por tanto un archivo (coockie) nuevo en tmp, por tanto los usuarios no comparten la sesion.

php.ini debes buscarlo, en /var/lib/php.ini o en c:\windows\

la funcion phpinfo() indica donde está dicho archivo.
  #19 (permalink)  
Antiguo 25/07/2005, 17:37
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Gracias broda, es quizas, tema para otro post, pero yo quería borrar algunos archivos generados luego de un tiempo (ya que como se generan en el servidor gracias a php, se recargaría demasiado!!).
__________________
Mi blog
  #20 (permalink)  
Antiguo 25/07/2005, 17:42
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
quieres borrar los archivos que guardan los datos de la sesion? o archivos creados por tu programa a indicacion del usuario?
  #21 (permalink)  
Antiguo 25/07/2005, 17:46
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 12 años, 8 meses
Puntos: 0
Pues, quiero borrar archivos creados por mi programa. Es decir (como ya lo puse en un tema que acabo de abrir :) ), los pasos serían los siguientes:

1. El usuario crea un archivo.
2. El usuario descarga el archivo.
3. El programa borra el archivo.
__________________
Mi blog
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 13:39.