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.
| |||
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; } } ?> |
| ||||
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 |
| |||
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. |
| ||||
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: Código PHP:
__________________ Mi blog |
| ||||
Estoy probando este script en una pagina: primera_pagina.php Código PHP: Código PHP: Primero se ingresa primera_pagina.php y luego a la segunda_pagina.php, pero no sirve de naa. Alquien me puede ayudar???
__________________ Mi blog |
| ||||
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, "/"); |
| ||||
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 15:21 |
| ||||
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. |
| ||||
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 |
| ||||
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 |