Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
23.06.2005, 15:21
Sir_Prize



ich arbeite auf einer seite mit cookies, die anzeigen soll, was es seit dem letzten besuch neues auf der seite gibt. dafür speichere ich die anzahl datenbank einträge im cookie und gleiche die beim besuch der seite mit der aktuellen zahl ab.

so weit so gut, funktioniert auch, aber nur für ein paar stunden. danach ist der cookie wieder gelöscht, jedenfalls sieht es danach aus.
Quellcode:if(!$_cookie["cookie_news"]) //überprüft ob der cookie existiert-
{
  $timestamp = time()+7257600;
  setcookie("cookie_news",$news_count,$timestamp); //wenn nicht, wird der cookie gesetzt
  echo "Du bst zum ersten mal auf der Seite oder hast keine Cookies aktiviert!"; //und ne fehlermeldung ausgegeben
}
else
... // sonst wird abgeglichen und das funktioniert einwandfrei
7257600 sec sollten eigentlich 12 wochen entsprechen. ich hab bei der suche in diesem forum den tip gefunden, den $timestamp auf 0 zu setzten, so dass der cookie ewig bleibt, dass funktionierte aber leider auch nicht.

ich bin ratlos: warum wird der cookie so schnell gelöscht?? oder liegt das problem woanders?

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)

zum Seitenanfang zum Seitenende Profil || Suche
001
23.06.2005, 15:26
K-Putt



Denkfehler.

Die Zeit, die man beim Cookie angibt, ist soweit ich weiß nicht der _Zeitpunkt_, an dem das Cookie gelöscht werden soll, sondern die Anzahl an Sekunden die von jetzt an vergehen müssen, damit das Cookie gelöscht wird.

Wenn du für die Zeit z.b. 3600 eingibst, "lebt" das Cookie genau eine Stunde.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
002
23.06.2005, 15:30
Sir_Prize



hm. berechtigter einwand, aber wenn dem so wäre, müsste mein cookie nicht kürzer, sondern etwa 35 jahre und 6 monate länger halten. denn ich rechne 12 wochen + der aktuelle UNIX-timestamp! o_O

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)

zum Seitenanfang zum Seitenende Profil || Suche
003
23.06.2005, 15:32
K-Putt



Zitat:
Sir_Prize postete
hm. berechtigter einwand, aber wenn dem so wäre, müsste mein cookie nicht kürzer, sondern etwa 35 jahre und 6 monate länger halten. denn ich rechne 12 wochen + der aktuelle UNIX-timestamp! o_O
Tja, vielleicht ist das zu lang?

Anderer Tipp: Wenn du den FF verwendest, kannst du in den Einstellungen deine Cookies betrachten, da steht der genaue Inhalt, und die "Haltbarkeit" des Cookies drin.

Wenn es klappt, müsste das Cookie in diesen Einstellungen ja ne Lebensdauer von +35 Jahren aufweisen.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
004
23.06.2005, 15:41
Sir_Prize



Zitat:
Tja, vielleicht ist das zu lang?
kann ich mir nicht vorstellen, denn der UNIX timestamp kann bis ins jahr 2030 reichen.

die lebenslauer im FF zeigt "bis zum ende der sitzung" an. demzufolge müsste die angabe falsch sein. lösche ich das time(), also ist $timstamp = 7257600, dann wird gar kein cookie gespeichert. :?

was soll ich tun?? kein plan.
du kannst es dir auch angucken unter http://funkwelle.infinite-server.de/index.php?site=news

**edit**
so, ich muss jetzt aber weg. bis später!

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)


Dieser Beitrag wurde am 23.06.2005 um 15:42 von Sir_Prize bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
23.06.2005, 15:42
CN



son php-int kann auch nich unendlich gross sein, und ich glaube 35 jahre ist knapp drüber
Tue, 19 Jan 2038 04:14:07 +0100 is glaube ich das höchste

--

zum Seitenanfang zum Seitenende Profil || Suche
006
23.06.2005, 16:31
theDon



Zitat:
expire
Der Zeitpunkt, wann das verfällt. Dies ist ein Unix Timestamp, also die Anzahl Sekunden seit der Unix-Epoche. In anderen Worten werden Sie diesen Wert wahrscheinlich mittels der Funktion time() plus der Anzahl Sekunden bis zum gewünschten Ablauf des Cookies. Sie könnten aber auch mktime() verwenden.

time()+60*60*24*30 wird das Cookie in 30 Tagen ablaufen lassen. Ist der Parameter nicht gesetzt, verfällt das Cookie am Ende der Session (wenn der Browser geschlossen wird).

http://de3.php.net/setcookie

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
007
23.06.2005, 17:32
TheTinySteini



time() + ... ist also richtig. Geht die Uhr auf dem Server/Client denn richtig? Vielleicht scheitert's schon an so einer Trivialität ;)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
008
23.06.2005, 17:44
K-Putt



Dann muss ich mich für meine Falsch-Informationen entschuldigen.

Wenn der FF anzeigt, dass das Cookie am Ende der Sitzung gelöscht wird, dann stimmt etwas mit dem Zeitwert nicht, z.b. wenn er 0 ist.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
009
23.06.2005, 20:22
oxff



Quellcode:if(!$_cookie["cookie_news"]) //überprüft ob der cookie existiert-

Zitat:
~
Quellcode:if(!isset($_COOKIE['cookie_news']))

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
010
23.06.2005, 21:16
Alcapone



PHP-Quellcode:<?php
setcookie
(blahfootime() +3600);
?>
So ist die korrekte form, wie ich sie kenne. Das Cookie gilt ab dem Zeitpunk, an dem der Timestamp gesetzt wird und verfällt nach 3600 Sekunden = 1 Stunde wieder. Ich kann allerdings nicht empfehlen, mit cookies zu arbeiten. Es gibt wesentlich intelligentere lösungen, z.B. über eine DB.

--

"Everything, that can go wrong, will go wrong" Murphy's Law

zum Seitenanfang zum Seitenende Profil || Suche
011
23.06.2005, 21:35
K-Putt



Zitat:
Alcapone postete
PHP-Quellcode:<?php
setcookie
(blahfootime() +3600);
?>
So ist die korrekte form, wie ich sie kenne. Das Cookie gilt ab dem Zeitpunk, an dem der Timestamp gesetzt wird und verfällt nach 3600 Sekunden = 1 Stunde wieder. Ich kann allerdings nicht empfehlen, mit cookies zu arbeiten. Es gibt wesentlich intelligentere lösungen, z.B. über eine DB.
Davon abgesehen dass die Lösung bereits gepostet wurde: Wie willst du, außer mit einem Cookie, bei einem Benutzer eindeutig erkennen ob er schon mal auf der Seite war?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
012
24.06.2005, 00:47
Tubgirl



Zwangsregistrierung.

--

zum Seitenanfang zum Seitenende Profil || Suche
013
24.06.2005, 01:00
Alcapone



Hm, also in nem Forum ist das möglich. z.B. der Timestamp bei gelesenen Threads/Boards

--

"Everything, that can go wrong, will go wrong" Murphy's Law

zum Seitenanfang zum Seitenende Profil || Suche
014
24.06.2005, 10:41
K-Putt



Zitat:
Alcapone postete
Hm, also in nem Forum ist das möglich. z.B. der Timestamp bei gelesenen Threads/Boards
Um Pepes Post zu erweitern: Ohne registrierung kannst du nicht fest stellen, ob ein User wieder gekommen ist.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
015
24.06.2005, 16:42
Sir_Prize



Zitat:
TheTinySteini postete
time() + ... ist also richtig. Geht die Uhr auf dem Server/Client denn richtig? Vielleicht scheitert's schon an so einer Trivialität ;)
ich hab nachgeguckt. die Uhr auf dem server stimmt mir meiner überein. (so +-2 minuten)

Zitat:
0xFF postete
Quellcode:if(!isset($_COOKIE['cookie_news']))
das ist egal. ohne isset() wird die ganze kausalität auch bei
- $var = 0
- $var = "0" oder
- $var = FALSE
wahr. kommt in diesem konkreten fall aufs selbe raus. Ist sogar noch besser. denn ich verwende keine db mit 0 einträgen, und wenn sowas im cookie steht, ist es offensichtlich falsch / manipuliert / wasweißich und muss korrigiert werden.

Zitat:
K-Putt postete
Davon abgesehen dass die Lösung bereits gepostet wurde
wo? wo? *fernglasrauskram* :)

leider behebt das alles immer noch nicht das problem, dass der timestamp nicht ordentlich gespeichert wird. als würde ich die angabe weglassen oder der timestamp wäre ungültig. o_O
ich kann den fehler echt nicht finden. und der code ist exakt wie oben (abgesehen davon, dass noch mehr cookies gespeichert werden. die weisen aber den gleichen fehler auf)

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)

zum Seitenanfang zum Seitenende Profil || Suche
016
24.06.2005, 17:49
theDon



Zitat:
Sir_Prize postete
ohne isset() wird die ganze kausalität auch bei
- $var = 0
- $var = "0" oder
- $var = FALSE
wahr. kommt in diesem konkreten fall aufs selbe raus. Ist sogar noch besser.
Nein. Du greifst auf einen Arrayindex zu, der unter Umstaenden gar nicht existiert. Das, was du willst, ist `!empty()'.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
017
24.06.2005, 18:11
K-Putt



@Sir_Prize

Also wenn ich deine Seite besuche, gilt jedes der gesetzten Cookies bis 15. September.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
018
24.06.2005, 18:12
Sir_Prize



Zitat:
Sir_Prize postete
das ist egal. ohne isset() wird die ganze kausalität auch bei
- $var = 0
- $var = "0" oder
- $var = FALSE
wahr. kommt in diesem konkreten fall aufs selbe raus. Ist sogar noch besser.
nun ja, so steht zumindest in dem buch, das neben mit liegt :D (data becker's best friend: "erfolgreicht starten mit php") man sollte eigentlich meinen, dass das stimmt :/

nun ja, wie dem auch sei, obs nun nicht ganz richtig ist oder nicht, es funktioniert (jaja, ich werds trotzdem verbessern), aber ändert nichts daran, dass das cookie nicht funktioniert.
denn der wert kann nur true oder false werden und in der anderen klammer werden die einträge auch gemacht (aber vorher abgefragt). - was mich im übrigen mal dazu veranlasst, den code umzuschreiben, denn gesetzt werden müssen die cookies ja in jedem fall. vielleicht ändert das was. *hoff*

**edit**
@k-putt: das ist ja super. also liegt der fehler bei mir. interessant. komisch dass die cookies von thewall etc. wohl funktionieren. naja. danke

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)


Dieser Beitrag wurde am 24.06.2005 um 18:14 von Sir_Prize bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
019
24.06.2005, 18:52
scus



bei mir steht allerdings auch "bis ans ende der sitzung" obwohl im firefox "cookies behalten: solange sie gültig sind" eingestellt ist...

--

sincères amitiés scus
--
Tand, Tand ist das Gebilde von Menschenhand

zum Seitenanfang zum Seitenende Profil || Suche
020
24.06.2005, 19:18
theDon



Zitat:
scus postete
bei mir steht allerdings auch "bis ans ende der sitzung" obwohl im firefox "cookies behalten: solange sie gültig sind" eingestellt ist...
Same here.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
021
24.06.2005, 19:33
K-Putt



Hier mein Beweis:

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
022
24.06.2005, 20:08
KhanRKerensky



Same here.

Übrigens nen Firefox mit Std.-Einstellungen.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche
023
25.06.2005, 12:08
Sir_Prize



häää? lol. okay. der fehler liegt doch nicht bei mir. aber blöd isses :D

so ich hab den code jetzt mal generalüberholt und son paar kleine dinge hier und da verändert und verbessert. zB hab ich die cookies nicht immer über $_cookie["blah"] angesprochen. jetzt tut der timestamp auch bei mir. und schon haben wir das nächste problem, denn (!isset($_cookie["news"])) liefert irgendwie immer TRUE, obwohl der cookie gestzt ist.

aber vielen dank für die hilfe bis hierhin!

***edit***
so, hab den fehler gefunden. ab sofort sprechen wir cookies mit $_COOKIE['blah'] an und nicht mit $_cookie["blah"]

--

"Herr Keuner sagte: «Schwierig ist, diejenigen zu belehren, auf die man zornig ist. Es ist aber besonders nötig, denn sie brauchen es besonders.»" - Bertolt Brecht
-
"Hier gibt's was auf die Ohren" - Thewall.de bei last.fm (Was ist last.fm?)


Dieser Beitrag wurde am 25.06.2005 um 12:42 von Sir_Prize bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
024
25.06.2005, 13:00
theDon



Wichtig ist das grosse _COOKIE, ob da nun einfache oder doppelte Quotes in der Klammer stehen, ist egal.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche