Foros del Web » Programando para Internet » PHP »

Problema con Logout

Estas en el tema de Problema con Logout en el foro de PHP en Foros del Web. Bueno vereis, puse en mi web un sistema de registro de usuarios que vi en una web y todo iba bien hasta que intento deslogearme ...
  #1 (permalink)  
Antiguo 06/08/2004, 16:31
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 14 años, 9 meses
Puntos: 0
Problema con Logout

Bueno vereis, puse en mi web un sistema de registro de usuarios que vi en una web y todo iba bien hasta que intento deslogearme desde un archivo que esta en /carpeta/archivo.php
En la raiz tengo los mismos archivos y me funcionan. Los archivos que uso son:
ingresar.php
Código PHP:
<?php 

$db 
mysql_connect("SERVIDOR","USUARIO","CONTRASEÑA");
mysql_select_db("BASE_DATOS"$db);

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("\\\\","&#92",$mensaje); 
return 
$mensaje


if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != ""

$nickN quitar($HTTP_POST_VARS["nick"]); 
$passN quitar($HTTP_POST_VARS["password"]); 

$result mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'"); 
if(
$row mysql_fetch_array($result)) 

if(
$row["password"] == $passN

//90 dias dura la cookie 
setcookie("usNick",$nickN,time()+7776000); 
setcookie("usPass",$passN,time()+7776000); 
?> <?php
echo "<SCRIPT LANGUAGE=\"javascript\">window.location.href = \"".getenv('HTTP_REFERER')."\";</SCRIPT>";  
?><? 

else 

echo 
"Password incorrecto <SCRIPT LANGUAGE=\"javascript\">window.location.href = \"".getenv('HTTP_REFERER')."\";</SCRIPT>";  
}
}
else 

echo 
"Usuario no existente en la base de datos <SCRIPT LANGUAGE=\"javascript\">window.location.href = \"".getenv('HTTP_REFERER')."\";</SCRIPT>";   

mysql_free_result($result); 

else 

echo 
"Debe especificar un nick y password <SCRIPT LANGUAGE=\"javascript\">window.location.href = \"".getenv('HTTP_REFERER')."\";</SCRIPT>";    

mysql_close(); 
?>
Este es para ingresar en la sesion
login.php
Código PHP:
<?php 
$loginCorrecto 
false
$idUsuarioL
$nickUsuarioL
$emailUsuarioL
$nombreUsuarioL;
$rangoUsuarioL
$avatarUsuarioL;
$expUsuarioL;
$nivelUsuarioL;
$guiles;
$paisUsuarioL;
$diaUsuarioL;
$mesUsuarioL;
$anyoUsuarioL;
$ocupacionUsuarioL;
$firmaUsuarioL;
$fechaUsuarioL;
$sexoUsuarioL;
$categoriaUsuarioL;
$jobUsuarioL;
$namejobUsuarioL;

if(isset(
$HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"])) 

$result mysql_query("SELECT * FROM usuarios WHERE nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'"); 

if(
$row mysql_fetch_array($result)) 

setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000); 
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000); 
$loginCorrecto true
$idUsuarioL $row["id"]; 
$nickUsuarioL $row["nick"]; 
$emailUsuarioL $row["email"]; 
$nombreUsuarioL $row["nombre"]; 
$passwordUsuarioL $row["password"]; 
$rangoUsuarioL $row["rango"];
$avatarUsuarioL $row["avatar"];
$expUsuarioL $row["exp"];
$nivelUsuarioL $row["nivel"];
$guiles $row["guiles"];
$paisUsuarioL $row["pais"];
$diaUsuarioL $row["dia"];
$mesUsuarioL $row["mes"];
$anyoUsuarioL $row["anyo"];
$ocupacionUsuarioL $row["ocupacion"];
$firmaUsuarioL $row["firma"];
$fechaUsuarioL $row["fecha"];
$sexoUsuarioL $row["sexo"];
$categoriaUsuarioL $row["categoria"];
$jobUsuarioL $row["job"];
$namejobUsuarioL $row["name_job"];

else 

//Destruimos las cookies. 
setcookie("usNick","x",time()-3600); 
setcookie("usPass","x",time()-3600); 

mysql_free_result($result); 

?>
Este es para definir los valores de la sesion (nombre de usuario, password...)
deslogeado.php
Código PHP:
<? 
setcookie
("usNick","x",time()-3600); 
setcookie("usPass","x",time()-3600); 
echo 
"<SCRIPT LANGUAGE=\"javascript\">window.location.href = \"".getenv('HTTP_REFERER')."\";</SCRIPT>"
?>
Y este ultimo es para hacer logout.
Estos archivos estan en la raiz de la web y todos funcionan correctamente, pero en carpeta/archivo.php tengo los mismos archivos pero no me funciona el logout, de hecho, si me identifico en carpeta/archivo.php y luego voy a la carpeta raiz y hago logout se deslogea en la raiz pero cuando vuelvo a entrar en carpeta/archivo.php esta la sesion abierta, o sea, en carpeta/archivo.php no se puede deslogear. Espero que me podais ayudar, gracias de antemano.
Saludos

Última edición por Gryphus; 06/08/2004 a las 16:33
  #2 (permalink)  
Antiguo 06/08/2004, 16:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En PHP hablar de "sesiones" se usa cuando usas www.php.net/session .. Pero no cuando hablamos de cookies (aunque en el fondo cumplen la misma función si lo usas para autentificar/validar usuarios en el tiempo que circula por tu aplicación ...). Esto es sólo un comentario para que no nos confundamos ..

Con respecto al problema con cookies .. Las cookies se puede definir un par de parámetros más:

Directorio de validez y Dominio ..

Todo esto lo ajustas en setcookie() www.php.net/setcookie

Un saludo,
  #3 (permalink)  
Antiguo 06/08/2004, 18:52
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 14 años, 9 meses
Puntos: 0
Gracias Cluster pero no me va.. o al menos como lo estoy poniendo, quiero que me sirva para todo el dominio y que se pueda eliminar en cualquier pagina, he añadido esto en ingresar.php:
Código PHP:
setcookie("usNick",$nickN,time()+7776000,"/","www.memoriasff.com"); 
setcookie("usPass",$passN,time()+7776000,"/","www.memoriasff.com"); 
y he quitado esto:
Código PHP:
setcookie("usNick",$nickN,time()+7776000); 
setcookie("usPass",$passN,time()+7776000); 
Si uso el logout en la raiz si que deslogea, pero si voy a carpeta/archivo.php y uso el deslogeado.php que hay ahi no me funciona (pero si funciona el logeo, igual que antes), saludos y, nuevamente, gracias

EDIT: Muchas gracias Cluster, parece que ya todo funciona correctamente ^^

Última edición por Gryphus; 07/08/2004 a las 18:19
  #4 (permalink)  
Antiguo 06/08/2004, 20:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El dominio vá sin www. .. sino sólo serviría tu cookie si entras por www.memoriasff.com y no por ejemplo para subdminos o incluso entrando por http://memoriasff.com

Por lo demás .. así ya debería funcionar:

Código PHP:
setcookie("usNick",$nickN,time()+7776000,"/","memoriasff.com"); 
setcookie("usPass",$passN,time()+7776000,"/","memoriasff.com"); 
Tienes que usar esta estrucutra para todo setcookie() que uses (tanto las que crean tus variables de cookie como las que lo actualices o borres).

Un saludo,
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 18:45.