Foros del Web » Programando para Internet » PHP »

La coookie no caduca

Estas en el tema de La coookie no caduca en el foro de PHP en Foros del Web. He definido unas cookies para autenticacion de usuarios, supuestamente le di de duracion 30 minutos a la cookie de tal modo que pasados 30 minutos ...
  #1 (permalink)  
Antiguo 05/01/2009, 11:00
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
La coookie no caduca

He definido unas cookies para autenticacion de usuarios, supuestamente le di de duracion 30 minutos a la cookie de tal modo que pasados 30 minutos el usuario deba volverse a autenticar, el script que tengo es el siguiente:

Código PHP:
//30 minutos
setcookie("usNick",$nickN,time()+1800);
setcookie("usPass",$passN,time()+1800); 
el problema que tengo es que pasados los 30 minutos la cookie sigue activa y permite el acceso sin estar autenticado, como puedo destruirla pasados los 30 minutos?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 05/01/2009, 11:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: La coookie no caduca

asigna el tiempo de modo negativo, osea... es como decir: ya caduco tal fecha
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/01/2009, 12:28
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
Respuesta: La coookie no caduca

la puse en negativo pero asi entonces la cookie no tiene ninguna duracion y no me deja autenticar
__________________
Say no more.......
  #4 (permalink)  
Antiguo 05/01/2009, 12:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: La coookie no caduca

bien, entonces... ¿como lo tienes implementado??

es un hecho que setcookie si funciona, pero... el problema radica en tu logica del manejo de esta cookie....

antes de volver a usar setcookie (al inicio de los scripts) debes comprobar su existencia en $_COOKIE, si YA existe, entonces no uses de nuevo setcookie...

ya que por siempre te seteará su valor, en 30 minutos después de time()

¿será por eso??

¿como tienes tu código??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/01/2009, 12:58
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
Respuesta: La coookie no caduca

mi codigo es
Código PHP:
<?php
include('connect.php');
function 
quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\\",$mensaje);
return 
$mensaje;
}
if(
trim($_POST['nick']) != "" && trim($_POST['password']) != "")
{
$nickN $_POST['nick'];
$passN $_POST['password'];
$result mysql_query("SELECT pss FROM usuario WHERE user='".$nickN."'");
if(
$row mysql_fetch_array($result))
{
if(
$row['pss'] == $passN)
{
//30 minutos
setcookie("usNick",$nickN,time()+1800);
setcookie("usPass",$passN,time()+1800);
?>
Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "menu.php";
</SCRIPT>
<?
}
else
{
echo 
"Password incorrecto";
}
}
else
{
echo 
"Usuario no existente en la base de datos";
}
mysql_free_result($result);
}
else
{
echo 
"Debe especificar un nick y password";
}
mysql_close();
?>
__________________
Say no more.......
  #6 (permalink)  
Antiguo 05/01/2009, 13:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: La coookie no caduca

si, veo que este script esta bien...

¿donde compruebas que existe la cookie???

¿es en otro script???


--
(ese debería ser el del problema)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 05/01/2009, 13:19
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
Puntos: 20
Respuesta: La coookie no caduca

la cookie la compruebo con
Código PHP:
<?php
include('connect.php');
include(
'login.php');

if(
$loginCorrecto)
{
esto lo incluyo en cada pag que esta dentro de la autenticacion

se me habia olvidado incluir el script que me autentica y que define la variable logincorrecto

es este

Código PHP:
<?php
$loginCorrecto 
false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;
$ciudadUsuarioL;

if(isset(
$_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{
$result mysql_query("SELECT * FROM usuario WHERE user='".
$_COOKIE["usNick"]."' AND pss='".$_COOKIE["usPass"]."'");

if(
$row mysql_fetch_array($result))
{
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
setcookie("usPass",$_COOKIE["usPass"],time()+7776000);

$loginCorrecto true;
$idUsuarioL $row["id"];
$nickUsuarioL $row["user"];
$emailUsuarioL $row["email"];
$nombreUsuarioL $row["nombre"];
$ciudadUsuarioL $row["ciudad"];
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
?>
__________________
Say no more.......

Última edición por el_cesar; 05/01/2009 a las 14:06 Razón: se me habi olvidado incluir una parte del script
  #8 (permalink)  
Antiguo 05/01/2009, 14:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: La coookie no caduca

El problema es que cada que entras a la pagina vuelves a poner las cookies con 30 minutos, por lo que mas bien si quieres que "caduquen" vas a tener que hacer un if para checar si ya existen las cookies antes de settearlas al comprobar.

Saludos.
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 05:58.