Foros del Web » Programando para Internet » PHP »

time() set cookie

Estas en el tema de time() set cookie en el foro de PHP en Foros del Web. Buenas tardes a todos, como ya e comentado en casos anteriores soy bastante nuevo en esto de programar y estoy aprendiendo php... bueno estube leyendo ...
  #1 (permalink)  
Antiguo 01/08/2012, 09:31
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
time() set cookie

Buenas tardes a todos, como ya e comentado en casos anteriores soy bastante nuevo en esto de programar y estoy aprendiendo php... bueno estube leyendo sobre las setcookie y en el tutorial que leí vi que le establecen tiempo de vida TIME(); pero no entendi muy bien el tiempo de duracion el ejemplo que vi era algo asi

Código PHP:
Ver original
  1. setcookie('color', $_REQUEST['colores'], time()+60*60*24*365);

y bueno decía que el tiempo de vida de esa cookie es de un año y es lo que no entiendo los parámetros que tiene el time()+60*60*24*365... a los que me puedan ayudar con esto gracias....

y bueno la otra dudad que tengo es que leyendo eso de las cookie vi también por la web que se puede establecer un tiempo de session por ejemplo si un usuario se logea y no hace ninguna actividad en la pagina durante 5 minutos entonces la session de este usuario se destruye de lo contrario el tiempo de esa session se restablece.... alguna idea de como se podría hacer esto?

a las personas que me puedan ayudar de ante mano muchas gracias...
  #2 (permalink)  
Antiguo 01/08/2012, 09:51
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: time() set cookie

Lo de la duración de una cookie es muy sencillo, los números que están después del time() son los segundos que se le sumarán a los segundos que han pasado desde el 1 de enero de 1970 al momento en que imprimes time(), en el ejemplo que pones el resultado es 31 556 926 segundos, el equivalente a un año, por lo tanto sumando el resultado a time() será una año después de la fecha que se ah definido la cookie.

Sobre el tiempo en sesiones hay dos formas, una perecida y otra donde se lleva el control "manualmente", a primera es definir el tiempo de sesión mediante la modificación del parametro "session.gc_maxlifetime" con ini_set, de la misma forma que con las cookies, es necesario indicar el tiempo en segundos, por ejemplo: ini_set("session.gc_maxlifetime",3600); lo cual seria lo mismo a una hora, sin embargo, con este metodo no importa si en esa hora el usuario esta muy activo o si abandonó el equipo, la sesión se cerrará, la otra forma es llevar el control "manualmente", crea una variable de nombre "tiempo" por ejemplo, y le agregas como valor time(), después en cada página vas verificando los segundos que han pasado, si sobrepasan el tiempo limite, destruyes la sesión, si no ha pasado el tiempo limite renuevas el valor de la variable tiempo....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 01/08/2012, 13:09
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: time() set cookie

Nemutagk gracias por tu ayuda (Y)

solo una pregunta en caso de verificar el tiempo que a pasado seria algo asi?

Código PHP:
Ver original
  1. $time=time()+60; // seria un minuto segun lo que entendi
  2.  
  3. // para verificar si paso el minuto seria algo asi?
  4.  
  5. if($time=60)
  6. {
  7.  
  8. }
  #4 (permalink)  
Antiguo 01/08/2012, 13:16
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: time() set cookie

Si tenemos en cuenta que $time almacena los segundos que han pasado desde el 1 de enero de 1970 hasta ahora, más 60 segundos.

Lo que deberías hacer es si acaso:

Código PHP:
$time=time()+60;
 
 
if(
time() > $time)
{
 

Aunque te digo que esto carece de sentido si se ejecuta dentro del mismo script. Ya que en ese caso ambos time() darían lo mismo.
  #5 (permalink)  
Antiguo 01/08/2012, 13:25
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: time() set cookie

No, no entendiste a lo que me referia, dejo un ejemplo sencillo para que se entienda....

Código PHP:
Ver original
  1. <?php
  2.  
  3. $limite = 60*5; //5 minutos
  4.  
  5. if (isset($_SESSION['tiempo'])) {
  6.     //verificamos si ya se caduco o no la sesión
  7.     if ($_SESSION['tiempo'] != 0) {
  8.         $segundos = time() - $_SESSION['tiempo'];
  9.  
  10.         //verificamos si los segundos pasados son menores o igual al limite
  11.         if ($segundos <= $limite) {
  12.             //si son menores o iguales esta dentro del rango, actualizamos los segundos
  13.             $_SESSION['tiempo'] = time();
  14.         }else {
  15.             //Si ses mayor a sobrepasado el limite, por lo tanto indicamos que ya se
  16.             //supero el limite de inactividad
  17.             $_SESSION['tiempo'] = 0;
  18.             //redireccionamos a index o cualquier otro archivo que indique que se
  19.             //supero el tiempo máximo de inactividad
  20.             header('location: index.php');
  21.             //detenemos la ejecución del script
  22.             exit();
  23.         }
  24.     }else {
  25.         //si $_SESSION['tiempo'] es igual a 0 quiere decir que ya se supero el tiempo de inactividad
  26.         header('location: index.php');
  27.         exit();
  28.     }
  29. }else {
  30.     //si no existe la variable quiere decir que acaba de entrar al sitio
  31.     $_SESSION['tiempo'] = time();
  32. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 01/08/2012 a las 13:30

Etiquetas: cookie, set, time, usuarios
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 10:09.