2017-07-11 3 views
1

Es ist irgendwie komisch, aber ich stellte mit ein Cookie entfernen:Cookie nicht funktioniert in PHP

setcookie('auth', 'ok', time() + 3600, "/"); 

Ergebnis:

Name: auth 
Content: ok 
Domain: --.com 
Path: /
Send for: Any kind of connection 
Accessible to script: Yes 
Created: Tuesday, July 11, 2017 at 11:00:23 PM 
Expires: Wednesday, July 12, 2017 at 12:00:23 AM 

Es funktioniert gut, aber wenn ich will diese entfernen Cookie:

setcookie('auth', 'ok', time() - 3600, "/"); 
unset($_COOKIE['auth']); 

gibt es keine Änderung im Ergebnis, und der Cookie wird nicht entfernt, und ich habe diesen Cookie immer noch in meinem Browser.

Das Cookie in dieser URL erstellt:?

Auth.php action =

bestätigen und eine Funktion mit ajax nennen:

Modell/Auth.php

Und es sollte es entfernen diese URL:

Auth.php action = logout

Aber es funktioniert nicht. Irgendeine Idee?

+0

Versuchen Sie, Wert als null festzulegen, wenn Cookie und Zeit auf -1 gelöscht werden, aber jederzeit in der Vergangenheit sollte funktionieren. – tilz0R

+0

Haben Sie 'setcookie (" auth "," ", time() - 3600) versucht;'? Definition leerer Wert – JTC

+0

@JTC ja, ich habe auch versucht, 'null', aber nicht funktioniert, leer und null .. habe immer noch diesen Cookie – Pedram

Antwort

0

Eine saubere Art und Weise, ein Cookie zu löschen ist sowohl die $ _COOKIE Wert und Browser-Cookie-Datei zu löschen:

if (isset($_COOKIE['auth'])) { 
    unset($_COOKIE['auth']); 
    setcookie('auth', '', time() - 3600, '/'); // Empty value and old timestamp 
} 
+0

aber immer noch nicht funktioniert ..: | – Pedram

+0

hat es Browser-Cookie-Datei auf Null geändert? – noobcode

+0

hat sich nichts geändert. Ich füge das 'if (isset ($ _ COOKIE ['auth'])) {echo" ok ";}' und es print 'ok' ich meine, es erkennt diesen Cookie, kann aber nicht löschen oder ändern. – Pedram

0

Höchstwahrscheinlich werden Sie ausgeben, bevor die Zerstörung der Cookie einige Daten.

versuchen, dies zu überprüfen, und vor jeder Ausgabe diesen Code verwenden:

setcookie("auth", "", time()-3600); 

Mit diesem $sent = headers_sent($file, $line); können Sie sehen, ob einige Daten wurden ausgegeben wurden, bevor Sie das Cookie zu zerstören versucht.