Cookie wird nicht gelöscht wenn Header("location : xyz") nachfolgend kommt

Athor

Mitglied
Guten Morgen liebe Mitsuchtis ;-)

Folgendes Problem, wenn ich ein Cookie lösche mittels setcookie("datvon", "", time() - 3600); und anschliessend der Befehle header("Location: index.php") mache, wird zwar die Seite index.php dargestellt, jedoch mein Cookie wird nicht gelöscht.
Wenn ich anstatt header(xyz) folgendes mache : echo '<meta http-equiv="refresh" content="0;url=index.php">' wird das Cookie ohne Probleme gelöscht, jedoch sieht man halt einen Moment lang eine leere Seite :-(

mein gesamter Code von logout.php :

<?php
ob_start();

session_start();

//Session zurücksetzen
$_SESSION["login_mand"] = 0;
$_SESSION["login_pers"] = 0;

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

session_destroy();

//header("Location: index.php"); // Cookie wird nicht gelöscht hiermit !!

echo '<meta http-equiv="refresh" content="0;url=index.php">';

ob_end_flush();
?>

Cookie wird gesetz mittels : setcookie("datvon", $rcdatvon, time() + 3600);


Bin grad etwas ratlos und weiss nicht wo ich den Fehler finden soll.

Ich muss dazu noch sagen dass index.php meine Hauptseite ist, in welche verschiede php's mittels include() eingebunden werden. In einer dieser Include's ist ein Link welcher auf logout.php zeigt.



Hoffe dass Ihr mir nen Tip habt wo das Problem liegen könnte.

Viele Dank

Grüsse
Dani
 
Zuletzt bearbeitet:
warum benutz du die session und eigene kekse?

header und setcookie arbeiten irgendwie nich richtig zusammen bei mir kahmen sogar fehlermeldungen ;)

hier die weiterleitung geht sonst auch noch...:
Code:
<html>
<body>

<script language="javascript">
<!--
window.location.href="index.php";
// -->
</script>

</body>
</html>
musst evtl anpassen...
das leitet sofort weiter...

weiss nur grad nicht und find es nicht wie ich das gelöst hab..
 
Zuletzt bearbeitet:
Ich nutze Cookies zusaetzlich zur Session um ein "dauerhaftes" Login zu ermoeglichen, so wie es ja hier im Forum auch gemacht wird.
Moeglicherweise hat unser Threadersteller auch sowas auf seiner Seite.

Als Vergleich mal meine logout.php:
PHP:
<?php
if (isset($_COOKIE['logincode']))
	{
		setcookie('logincode',false,time()-3600);
		$sqldb->query("update `users` set `logincode`=null where `id`='".$_SESSION['id']."'");
	}
session_regenerate_id(true);
session_destroy();
$sqldb->query("update `sessions` set `userid`='0' where `sessionid`='".quote_string($sessionid)."'");
header('Location:'.$sessioncheckcaller);
exit;
?>
Bei mir wird alles wunderbar geloescht, garkeine Probleme.
 
Oh mann... manchmal sieht man den Wald vor lauter Bäume nicht mehr ^^

Ich kann ja die Sachen in die Session packen und muss mir gar keine Cookie's machen, jedensfalls für einige Sachen...
Für die Sprachsteuerung brauch ich nachwievor Cookies, da dies über das Login/Logout hinweg gehen. Aber das funktionert eigentlich auch ganz gut, und hatte mit dem oben genannten Problem nichts zu tun.

Danke Dir, das mit dem Javascript läuft. Hätte auch selbst drauf kommen sollen *schäm*


Danke für Eure Hilfe.
 
Zuletzt bearbeitet:
da muss ich dir (Dennis Wronka) auch rechtgeben ambesten fügst du zu dem code von mir einen Link mit drann also ganz normalen a-tag damit es für user auch geht die js deaktiviert haben


MfG Gunah
 
Es funktioniert bei mir doch auch (siehe meinen Code den ich oben gepostet hab), entsprechend waere es vielleicht gut zu klaeren wo genau das Problem liegen koennte statt gleich Ausweichloesungen zu suchen.
Hierbei koennte z.B. ein Programm wie Wireshark helfen, dort kann man dann z.B. sehen ob das Set-Cookie-Header in der Antwort enthalten ist oder nicht.
 
hmm doch bei mir ging es auch mit dem header()... welche keske werden denn nicht gelöscht? hier sonst evtl ne lösung: setzte dieses hier vor header() " ob_end_flush();" satt dort drunter...

aber ich habe eben nochmal die kekse vom board hier angeguckt die zerfallen nach 1 Jahr... (des letzen besuches)
 
Also mir hat das jetzt doch keine Ruhe gelassen und ich hab mal was ganz simples versucht:

Datei "Index.php"
PHP:
<html>
<?php
   if (isset($_COOKIE["test"]))
      echo "Cookie vorhanden!";
   else
      echo "Kein Cookie vorhanden!";
?>

<body>
   <a href='cookie.php'>Mach ein Cookie</a>   
</body>
</html>


Datei "cookie.php"
PHP:
<?php       
   setcookie("test", "Hallo", time() + 3600);
   header("Location: index.php");      
?>

1 -> index.php start
2 -> Link drücken und schauen was passiert.

Bei mir kommt immer dass "KEIN" Cookie vorhanden ist.
Wenn ich jedoch die header()-Zeile rausnehme und dann nach dem Klick auf den Link nochmals die index.php aufrufe, kommt dass das Cookie vorhanden ist.

Hab PHP 5.2.1 momentan am laufen zusammen mit IIS (Win2k)
Könnte es ein Problem damit geben?

Grüsse
Dani

Edit : ob_start / flush hat keine auswirkung bei mir.
Teste mit IE6 und Firefox 2 verhalten sich identisch.
 
Zuletzt bearbeitet:
Probier mal das hier: cookietest.php
PHP:
<?php
if (isset($_GET['check']))
{
 setcookie('testcookie','',time()-3600);
 header('Location:cookietest.php?show');
 exit;
}
elseif (isset($_GET['show']))
{
 if (!empty($_COOKIE['testcookie']))
 {
  echo 'Cookie "testcookie" ist vorhanden';
 }
 else
 {
  echo 'Cookie "testcookie" ist nicht vorhanden';
 }
}
else
{
 setcookie('testcookie','lalaland',time()+3600);
 header('Location:cookietest.php?check');
 exit;
}
?>
Dieser Code ist ungetestet (hab den mal so spontan zusammengeschustert) aber der sollte eigentlich einen Cookie setzen, dann loeschen und anschliessend anzeigen ob er noch da ist.
 
Zurück