Cookie - Logik Problem

Carrear

Erfahrenes Mitglied
Hi Leute,

ich möchte gerne einen bestimmten Tag nur dann anzeigen, wenn ein Cookie noch nicht gesetzt ist oder einen bestimmten Wert hat. Was ich nicht verstehe ist folgendes.

Ich muss das Cookie ja ÜBER dem Head setzen. Das Video kommen aber erst im Body. Ich will ja sozusagen eine Abfrage um das video machen :

Wenn das Cookie (welches aussagt, dass man das Video schon gesehen hat) gesetzt ist, dann zeige es nicht an. Wenn das Cookie noch nicht gesetzt ist, dann zeige das Video an und setze DANN das cookie,

Wie soll das gehen, wenn ich es im Head setzen muss?
Wahrscheinlich habe ich ein grundsätzliches Verständnisproblem, aber ich hoffe ihr könnt mir weiterhelfen.

LG
 
Ich weiß nicht genau, wo dein Problem liegt, denn du renderst sowohl die Seite mit PHP als auch den Header dieser. Es ist also kein Problem. Oder vielleicht verstehe ich dein Problem nicht ganz. Dann solltest du dein Problem vielleicht noch einmal genauer und/oder anders erklären. Vielleicht auch mit Skriptschnipseln.
 
Häh :D ?
Um es vereinfacht darzustellen.


HEAD
/HEAD
BODY

PHP: WENN (Cookie gesetzt) { echo "display:none;" } else { echo "display: block"; SETCOOKIE(!Geht ja nicht) }

/BODY
 
Dein Problem ist, dass du den Header nicht nach dem Quelltext der Seite generieren kannst? Dann puffere doch die Ausgabe und schicke sie erst dann los, wenn du den kompletten Quelltext generiert hast.
 
Ich weiß ehrlich gesagt nicht ob das einfach so geht. Ich benutze Drupal und ich glaube nicht, dass man das ohne weiteres machen kann.
 
Ich lach mich schlapp ^^ Ich habe hier gestern Abend noch mit Cookies rumprobiert. Ich wollte im Prinzip oben über dem Head eine Überprüfung des Cookies machen und dort dann eine Variable bestimmten, um diese später wieder abzufragen:

Ist Cookie gesetzt?
Ja: $videogesehen = true
Nein: $videogesehen = false; Cookie setzen

Und dann wollte ich es im Body abfragen und dadurch die Ausgabe oder nicht Ausgabe bestimmen. Allerding ist der Teil des Bodys in dem das Video angezeigt wird in einer andere Datei und Drupal bekommt die sonstwie verschachtelt (ich nehm ja mal an durch includes oder so). Und da wusste ich nicht in welcher Form ich in der einen Datei die Variable bestimmen soll um Sie an der entsprechenden Stelle wieder abfragen zu können.

Dann habe ich etwas versucht und es kam mir gestern Abend total unlogisch vor:

Über dem Head:

PHP:
<?php
if($_COOKIE['videogesehen'] == 1){
} else {
setcookie("videogesehen", "1", time()+60*60*24); // 1 Tag
}
?>

Im Body:

Code:
<article id="startvideo" <?php if($_COOKIE['videogesehen'] == 1){ echo "style=\"display: none;\""; } else { echo "style=\"display: block;\""; } ?>;">
				<?php print render($page['startvideo']); ?>
</article>

Gestern sagte mir meine Logig, dass die Überprüfung im Body IMMER ergeben müsste, dass $_COOKIER['videogesehen'] gleich 1 ist und somit müsste die Ausgabe doch immer display: none sein oder? Aber lustigerweise funktioniert DAS genau so wie ich es mir wünsche !? Das verstehe ich nicht :D

VG
 
Nee ist ok so
$_COOKIE wird erst eingelesen dann wird setcookie ausgeführt.
Und da setcookie die Variable nicht erzeugt ist die Abfrage erst beim 2. Durchgang true
 
Zurück