2012-09-19 10 views
10

tengo este código que setted cuando el registro de inicio de sesión está bien:galletas Unset php

if((isset($_POST["remember_me"]))&&($_POST["remember_me"]==1)) 
    { 
    setcookie('email', $username, time()+3600); 
    setcookie('pass', $pass, time()+3600); 
    } 

Ahora, cuando hago clic en el enlace de desconexión (logout.php) lo hice:

<?php session_start(); 
setcookie("email", '', 1, ""); 
setcookie("pass", '', 1, ""); 
$_SESSION["login"] = ""; 
header("location: aforum/enter_furom.php"); 
?> 

No usé la sesión de destrucción porque no quiero destruir todas las sesiones .... ahora destruir una sesión funciona bien ... pero cuando intento desactivar las cookies, los navegadores (todos los navegadores: explorer, chrome, firefox, mozilla) dame un error diciendo que el nuevo co okies no se puede configurar ... ¿Alguna ayuda para deshacer las cookies anteriores?

+0

Casi allí, pero que en realidad no dicen lo _actually happens_ a la browser- se conservan las galletas? Cambiado de alguna manera? – glenatron

+0

he editado mi pregunta man;) – michael

+0

Puede encontrar ['$ cookie-> delete()'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php# L173) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). – caw

Respuesta

11

utilizar el superglobal _COOKIE variables:

unset($_COOKIE['mycookiename']); 

o llame setcookie() con única las galletas nombrar

setcookie('mycookiename'); 

Para restablecer las cookies en el uso de cierre de sesión:

setcookie('pass'); 
setcookie('email'); 

Para ti cheque de inicio de sesión:

if(
    isset($_POST["remember_me"]) && 
    $_POST["remember_me"]==1 && 
    $_COOKIE['pass'] != NULL && 
    $_COOKIE['email'] != NULL && 
) 
+0

aún no funciona ... el nuevo error me da: el redireccionamiento (ubicación del encabezado ...) ha sido muy veces ... o para eliminar las cookies de mi pc o un problema del servidor ... pero cuando lo elimino cookies de la pc ... funciona de nuevo ... y cuando se cierra la sesión ... el mismo problema ...: \ – michael

+0

¿está seguro de que la cookie no se restablece después de que se ha eliminado y el cliente se reenvía por el encabezado()? –

+0

sí, el hombre es su conjunto ... yo sabía cuál es mi problema ... mi problema ... que en mi cheque, .... 'if ((isset ($ _ COOKIE [" email "])) && (isset ($ _ COOKIE ["pass"]))) { $ _SESSION ["login"] = 1; } ' .. ahora ¿cómo puedo hacer en este cheque no solo si se envía un correo electrónico ... pero solo el correo electrónico, por ejemplo! = 1? – michael

1

Para desactivar las cookies en PHP, simplemente configure su tiempo de caducidad a un tiempo en el pasado. Por ejemplo:

$expire = time() - 300; 
setcookie("email", '', $expire); 
setcookie("pass", '', $expire); 
5
setcookie('cookiename', '', time()-3600); 
0

Es necesario establecer el tiempo de expiración al pasado, por ejemplo,

setcookie('email', '', time()-3600); 

también debería utilizar un Absolute URI para su header('Location:' ....).

2

Compruebe en su navegador el directorio donde opera la cookie. Y desactívelo especificando la ruta que tiene la cookie. Al igual que en el ejemplo si el directorio cookie es /aforum/

setcookie ("email","",time()-1,"/aforum/","http:// yourdomain.com"); 
+0

el manual sugiere 'time() - 3600' pero -1 o -9999 también son una locura. ¿Por qué las personas usan un call to time() en absoluto? ¿por qué no simplemente escribir el tiempo equivalente al 1 de enero de 1970? – gcb

1

En Chrome y IE8 + al menos, lo siguiente será eliminar la cookie del navegador. No se reflejará en la matriz $_COOKIE hasta que la página se vuelva a cargar sin embargo.

setcookie('cookiename','',0,'/',$cookieDomain)

es posible que pueda dejar fuera algunos parámetros aquí, pero lo importante es que esté configurando una cadena vacía, y que elimina la cookie del navegador.

0

probar esto

setcookie ("email", "", time() - 3600); 
    setcookie ("pass", "", time() - 3600); 
Cuestiones relacionadas