Cookie in Laufzeit 2x verändern

28dayslater

Mitglied
Ich arbeite an einem Login-System.
Eigentlich ja keine Problem, nur stehe ich grade vor dem Problem, dass ich in einer Laufzeit gerne die "id" neu beschreiben möchte.
Das Problem ist, wenn ich einfach sage

PHP:
<?php setcookie("id",$id,time()+4600); ?>

wird (warum auch immer) das Cookie nur erweitert. Das heisst an den alten Wert wird der Neue gehängt.

Daher versuche ich es hiermit:

PHP:
<?php 
setcookie("id"); 
setcookie("id",$id,time()+4600); 
?>

Damit soll es erst gelöscht werden und dann neu geschrieben werden, jedoch funktioniert auch das nicht und das selbe Problem wie oben tritt auf.

Getestet habe ich es jez inner Test-Umgebung und bei 1und1 und beide Male ging es nicht.
Es gibt zwar alternative Lösungen, zum Beispiel die Befehle in verschiedene Dateien auszulagern und per Header(location) aufzurufen, aber das ist dann nicht sehr sauber progrogrammiert.

Kann mir eventuell wer helfen?

Mit freundlichn Grüßen
28dayslater
 
Einfach das Cookie, um es zu löschen, auf einen Verfallszeitpunkt in der Vergangenheit setzen. Zum Beispiel: setcookie("id", "", time()-3600);

//Edit: Das Ganze steht aber auch auf dieser unbekannten Seite im Example #2.
 
Zuletzt bearbeitet:
Wie man Cookies löscht weiss ich selber. Das Problem ist nur, dass das Cookie nur gelöscht wird, wenn man nur einmal setccookie anwendet.

PHP:
setcookie("id", $id, time()-3600);
setcookie("id", $id, time()+3600);


führt bei mehrmaligem Aufruf dazu, dass an das bereits vorhandene Cookie der Inhalt der Variable $id angehängt wird.

Meiner Meinung nach ergbt das zwar keinen Sinn, aber es ist nunmal so bei mir.

PS: Deine Hochnäsigkeit kannste dir auch sparen. Wenn dich dieser Post so nervt, dann brauchse nicht drauf antworten. Man brauch nicht jeden der eine Frage stellt als Volldepp abstempeln.
 
Zuletzt bearbeitet:
PHP:
setcookie("id", $id, time()-3600);
setcookie("id", $id, time()+3600);
führt bei mehrmaligem Aufruf dazu, dass an das bereits vorhandene Cookie der Inhalt der Variable $id angehängt wird.
Nein.
PS: Formuliere Deine Fragen halt nicht so schwammig. :p

//Edit: Kannst Du halt auch so ausprobieren:
PHP:
<?php
$id = "ID";
setcookie("id", $id, time()-3600);
setcookie("id", $id, time()+3600);
echo($_COOKIE['id']);
?>
Hättest Du es so ausprobiert, wäre Dir aufgefallen, dass es an Deinem Skript liegt und Du hättest es direkt posten können :D
 
Zuletzt bearbeitet:
PHP:
$id.=substr(md5(microtime()),0,20);
for ($i=0;$i<5;$i++)
{$id.=chr(rand(65,90));
$id.=chr(rand(97,122));}
$id=str_shuffle($id);

setcookie("id", $id, time()-3600);
setcookie("id", $id, time()+3600);
echo $id.'<br>';
echo $_COOKIE['id'];

erklär mir mal bitte, warum, wenn man das ausführt , die variable erweitert wird? $id müsste beim Scriptaufruf immer wieder leer sein...
-
das oben ist nur ne einfache methode um nen schlüssel zu genererieren
-
Gibt es Cookies auch sowas wie register_globals?
PS: danke du hast mir die augen geöffnet, habe das Problem behoben, wobei ich es noch nicht verstehe!
 
ok schon fertig.
Register -Globals wirkt sich ja auch auf $_COOKIE aus...daher wurde meine id erweitert.

darauf muss man aber auch erstmal kommen!

Danke Localhost
 
danke dass ihr mich erinnert habt. Ich hab es einfach vergessen. Ich war dabei, dass nur GET so behandelt werden. Naja und so kam es dazu, dass das ganze Script durch einen einzigen Punkt verändert wurde :p

anstatt $id.='';
schreibe ich jetzt $id='';

danke nochmal!
 
Zurück