Foros del Web » Programando para Internet » PHP »

Eliminar cookies, no hay manera

Estas en el tema de Eliminar cookies, no hay manera en el foro de PHP en Foros del Web. Amigos, no hay manera de eliminar las cookies. Fíjense qué código más sencillo y funcionaba hasta que manejé el menú con idiomas mediante cookies. El ...
  #1 (permalink)  
Antiguo 04/05/2011, 14:14
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Pregunta Eliminar cookies, no hay manera

Amigos, no hay manera de eliminar las cookies. Fíjense qué código más sencillo y funcionaba hasta que manejé el menú con idiomas mediante cookies. El tema es que en los idiomas llamo a $_COOKIE['idioma'] y de repente ya no funciona cerrar sesión. La página está montada bajo includes dentro de la estructura, y cerrar sesión es p3.php:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_GET['z'])) {
  3.  
  4.     unset($_COOKIE['usr']);
  5.     unset($_COOKIE['pwd']);
  6.         /* He probado con setCookie("usr", "", time()-60*60*4) la cual antes funcionaba pero ahora tampoco funciona*/
  7.     header("Location: ../index.php");
  8. } else {
  9.  
  10. ?><span class="bold">Va usted a cerrar sesión.</span>
  11. <br><br>
  12. Esta acción eliminará las cookies existentes en su navegador.<br>
  13. Para volver a entrar deberá introducir de nuevo su usuario y contraseña correspondientes.
  14.  
  15. <br><br>
  16.  
  17. ¿Desea continuar?<br><br>
  18. <p align=right><button type="button" class="botoneras" onclick="history.go(-1);">Cancelar</button><button type="button" class="botoneras2" onclick="window.location.href='perfil/p3.php?z';">Aceptar</button></p>
  19.  
  20. <?php } ?>

No ofrece ningún error de cabeceras, e incluso redirige correctamente, pero no elimina las cookies en ningún momento.

En el menú hago un switch así:

Código PHP:
Ver original
  1. <?php
  2. switch($_COOKIE['idioma']) {
  3.  
  4.    
  5.     case "en":
  6.     break;
  7.    
  8.     case "pt":
  9.     break;
  10.  
  11.     default:
  12.     break;
  13. }
  14. ?>

Vamos que sólo llamo a la cookie.

Qué puede estar pasando y cuál sería la solución? Eliminar el menú?

Gracias y un saludo.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #2 (permalink)  
Antiguo 04/05/2011, 14:59
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Eliminar cookies, no hay manera

Según veo en el código de salir (el de arriba), borras las cookies de 'usr' y 'pwd', pero nunca borras la cookie de 'idioma', así que no es extraño que siga apareciendo la cookie en el switch.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 04/05/2011, 15:48
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Respuesta: Eliminar cookies, no hay manera

Lo curioso es que no quiero borrar idioma, sino usr y pwd, y no borran nunca, ni siquiera se cambian los contenidos de estas dos cookies.

Es raro no? Es decir, yo cierro sesión, no da error, pero sigo logueado.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 04/05/2011, 16:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Eliminar cookies, no hay manera

Me pregunto como tienes configurada tu sesión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/05/2011, 03:28
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Respuesta: Eliminar cookies, no hay manera

A ver en el login se registran dos cookies:

usr : identificador del usuario en la base de datos en md5()
pwd : password del usuario en la base de datos en md5()

Con estos dos datos compruebo si la sesión es válida en cada página.

Todo funcionaba correctamente, cerraba sesión, etc. Pero ahora me ha surgido el tema de los idiomas, y para configurarlo por un año, necesito una cookie. Esa cookie idioma se lee en el fichero menu.php para mostrar un menú diferente según el idioma, con un switch.

Pues como el menu.php está con includes en todas las páginas, ahora resulta que no cierra sesión, debido a que en menu.php se lee la cookie idioma (pero no se hace setCookie, sólo $_COOKIE[])

No entiendo porqué ocurre. Debería dar algún error de qu elas cabeceras ya están enviadas al menos no? Porque si no da error ni borra cookies, qué es lo que sucede?

Si lo desean les adjunto más código fuente.

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #6 (permalink)  
Antiguo 05/05/2011, 04:03
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Respuesta: Eliminar cookies, no hay manera

Este es el login, lo llamo por AJAX y el redirect lo pillo con substr de javascript:

Código PHP:
Ver original
  1. <?php
  2.  
  3. include("db.php");
  4.  
  5. $sql = " SELECT * FROM usuarios WHERE user='".$_POST['cmpuser']."' AND pass='".md5($_POST['cmppass'])."'";
  6. $rs = mysql_query($sql, $conexion) or die ();
  7.  
  8. if(mysql_num_rows($rs)>0) {
  9.  
  10.     setCookie("usr", md5($_POST['cmpuser']));
  11.     setCookie("pwd", md5($_POST['cmppass']));
  12.    
  13.     $fila = mysql_fetch_object($rs);
  14.  
  15.     setCookie("uf", $fila->ultf);
  16.     setCookie("ui", $fila->ultip);
  17.  
  18.  
  19.     $sql2="UPDATE usuarios SET ultf=now(), ultip='".$_SERVER['REMOTE_ADDR']."' WHERE id=".$fila->id;
  20.     mysql_query($sql2, $conexion) or die ();
  21.  
  22.     include("acceso.php");
  23.  
  24. } else {
  25.  
  26.     echo "redirect:error.php?e=1";
  27.  
  28. }
  29.  
  30. ?>

Bien, loguea, y todo correcto. Y lo siguiente está en la estructura de todas las páginas:

Código PHP:
Ver original
  1. <div id="separacion">
  2.        
  3.             <div id="capaCat">
  4.                 <blockquote class="oval-thought">
  5.                 <p id="capaCatTxt"></p>
  6.                 </blockquote>
  7.             </div>
  8.            
  9.             <div id="menu">
  10.                 <?php include("menu.php"); ?>
  11.             </div>


Ahora, esto es el menu.php

Código PHP:
Ver original
  1. <?php
  2. switch($_COOKIE['idioma']) {
  3.  
  4.    
  5.     case "en":
  6. ?>
  7.         <ul id="navigation">
  8.                    <!-- inglés-->
  9.         </ul>
  10. <?php  
  11.    
  12.     break;
  13.    
  14.     case "pt":
  15. ?>
  16.         <ul id="navigation">
  17.                    <!-- portugués-->
  18.         </ul>
  19. <?php  
  20.    
  21.     break;
  22.  
  23.     default:
  24. ?>
  25.         <ul id="navigation">
  26.                    <!-- español-->
  27.         </ul>
  28. <?php  
  29.     break;
  30. }
  31. ?>

Pues bien, si quito la lectura de la cookie, es decir, saco el switch y lo pongo todo en español, no cierra sesión en el logout.php:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_GET['z'])) {
  3.  
  4.     unset($_COOKIE['usr']);
  5.     unset($_COOKIE['pwd']);
  6.         /* He probado con setCookie("usr", "", time()-60*60*4) la cual antes funcionaba pero ahora tampoco funciona*/
  7.     header("Location: ../index.php");
  8. } else {
  9.  
  10. ?><span class="bold">Va usted a cerrar sesión.</span>
  11. <br><br>
  12. Esta acción eliminará las cookies existentes en su navegador.<br>
  13. Para volver a entrar deberá introducir de nuevo su usuario y contraseña correspondientes.
  14.  
  15. <br><br>
  16.  
  17. ¿Desea continuar?<br><br>
  18. <p align=right><button type="button" class="botoneras" onclick="history.go(-1);">Cancelar</button><button type="button" class="botoneras2" onclick="window.location.href='perfil/p3.php?z';">Aceptar</button></p>
  19.  
  20. <?php } ?>

A ver si me podéis ayudar

saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #7 (permalink)  
Antiguo 05/05/2011, 04:18
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Respuesta: Eliminar cookies, no hay manera

Ya lo he solucionado

Simplemente con un archivo logout.php por separado. Lo que sigo sin entender es por qué antes funcionaba y al leer la cookie en el switch ya no funcionaba.
El logout.php lleva:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     setCookie("usr", "", time()-3000);
  4.     setCookie("pwd", "", time()-3000);
  5.     header("Location: index.php");
  6. ?>

Saludos y gracias.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #8 (permalink)  
Antiguo 05/05/2011, 06:29
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Eliminar cookies, no hay manera

todo un misterio, tu servidor esta poseído xD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #9 (permalink)  
Antiguo 05/05/2011, 06:33
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 1 mes
Puntos: 29
Respuesta: Eliminar cookies, no hay manera

Es un apache2 bajo debian y php5
Las configuraciones son las básicas de postinstalación

No creo que eso pueda estar poseído pero a mí también me huele a fantasma.... jajajaj
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: cookies
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:07.