PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cookies falsch gesetzt ?!?


nivram
27.08.2002, 23:47:22
Ich habe nun folgendes geproggt

setcookie ("vote", "", time() - 86400);

if($HTTP_COOKIE_VARS["vote"] == "yes"){
echo "Sie können innerhalb von 24 Stunden nur 1mal abstimmen !"; }

else {

$counter = "$vote_id.txt";
$fp = fopen($counter,"r");
$zahl = fgets($fp,10);
fclose($fp);
$zahl++;
$fp =fopen($counter,"w");
flock($fp,2);
fputs($fp, $zahl);
flock($fp,3);
fclose($fp);

$value = "yes";
setcookie ("vote", $value, time()+86400);

}

Kann mir mal jemand sagen, warum ich bei einem Reload der Seite trotzdem weiterhin abstimmen kann ?? Hab ich da nen Denkfehler drin oderso ?

Bis denne ... MARV

ingo
28.08.2002, 00:46:30
um einen cookie zu löschen musst du ihn mit exakt denselben werten (nur halt der negativen zeit) setzen.

also wenn du ihn mit

setcookie ("vote", "yes", time()+86400);

setzt, dann löscht du ihn mit

setcookie ("vote", "yes", time()-86400);

lg, ingo

nivram
28.08.2002, 09:31:08
Vielen Dank, es hat geklappt !

Aber bei php.net stand, das man das Cookie so löschen muss,

setcookie ("vote", "" , "time() - 86400")


wenn man es so gesetzt hat !

setcookie ("vote", "yes" , "time() + 86400")


Bis denne ... MARV

SPiC
28.08.2002, 11:16:55
Anmerkung: Die negative Zeit muss nich unbedingt der positiven Entsprechen, also z.B. kann man ein Cookie mit time()+86400 auch mit time()-1 löschen oder einfach mit 0.

Progman
28.08.2002, 12:00:05
das Script sendet immer, das das Cookie gelöscht werden soll. Manchmal sendet es auch, das das Cookie gelöscht und gesetzt werden soll. Der Browser kommt dann nicht klar, ob er jetzt ein cookie setzten soll oder nicht.
Desweiteren hat nicht jeder Browser Cookies aktiviert, dann bringt die Sperre garnix.


Ein Cookie kann man auch mit setcookie('name'); löschen

nivram
28.08.2002, 12:31:05
@ Spic

Was willst du mir damit sagen ?

@Progman

Wie kann ich es den Browsersicher machen, also das der Browser keine Probleme bekommt ?


Bis denne ... MARV

SPiC
28.08.2002, 13:02:31
Das war für nur so eine erklärende Anmerkung.

Beim Löschen eines Cookies sollten sie sicher stellen, dass die Verfallszeit in der Vergangenheit liegt, damit ihr Browser "zufrieden" ist.


Du muss also nur eine vergangene Zeit angeben, das Beispiel verwendete time()+86400 und time()-86400, was eine User dazu verleiten könnte anzunehmen, dass man immer die gleiche Zeit abziehen muss...

ingo
28.08.2002, 13:26:35
wie könnt ihr über so einen scheiss nur so lange diskutieren?
tschuldigt meine ausdrucksweise, aber das ist doch sinnlos..

mein beispiel mit negativer zeit funkt und ist eindeutig ersichtlich.
da drüber über 10 postings lang zu diskutieren ob das nun das selbe sein muss oder nicht ist doch völlig hinfällig, oder?

jedeR der/die sich das anschaut, wird feststellen, es funkt, es in zukunft so machen, und nicht darüber nachdenken, ob da irgendwas passiert...

im übrigen reicht es nicht einfach nur eine negative zeit anzugeben. die negative zeit muss mindestens so lange zurückliegen, dass die "cookiesetzzeit" unterschritten ist. mit time()-1 wird die zeit, die der cookie noch zu leben hat um eine sekunde verkürzt.

flamt mich nur nieder.. meins nicht böse, fällt mir nur schon seit geraumer zeit auf und ich finds mehr verwirrend als produktiv.. wobei ich den informationsaustausch hier im forum keinesfalls gefährden möchte.. ;-)

lg, ingo

Ben20
28.08.2002, 13:38:49
Siehs so:

Wenn der Fragende es auf Anhieb verstanden hat - gut - falls nicht sind die weiteren Posts doch nützlich.

Außerdem finde ich das ein wenig Erklärung doch mehr hilft als der reine Quelltextbrocken.


Immerhin wird hier versucht die Hohe Kunst des (PHP)Kochens zu lehren und nicht nur (PHP)Kochrezepte beizubringen, wenn ich mich mal so blümerant ausdürcken darf. ;-)

SPiC
28.08.2002, 14:38:40
Das dumme ist nur manchmal, das Anfänger solche Sachen lesen und u.U. falsche Tatsachen vermuten...

N00B liest:
+1000 -1000
N00B denkt:
Aha, ich muss also den selben Wert abziehen, aber was, wenn ich den Wert nicht kenne...

So entstehen Threads....

Schau mal unter www.php.net/setcookie nach, wieviele User dort Anmerkungen über Probleme gepostet haben.