[EDIT]Warnmeldung für Cookies, function erstellen

Habe mir mit PHP einen Code zusammen gebastelt der beim Betreten der Seite ein Container mit einer Meldung ausgibt. Wird anschließend auf den Button im Container gedrückt setze ich ein Cookie, der Container Inhalt wird gelöscht und der Container sollte ausgeblendet werden.
Genau hier liegt das Problem, der Container verschwindet erst, sobald ich die Seite 2 mal neu geladen habe.
Habe bereits versucht in der Form unter action="" eine URL anzugeben. Ohne Erfolg…

Code:

[code]if(isset($_POST[‘cookie_alert_get’])){
setcookie( “cookie_alert”, “true”, strtotime( ‘+30 days’ ));
$cookie_alert=’’;
}

if(isset($_COOKIE[‘cookie_alert’]))
{
$cookie_alert=’’;
} else {
$cookie_alert='

Wir verwenden Cookies um unsere Seite optimal darzustellen.
';
}[/code]

Ausgabe im Header:

Würde gerne auf JavaScript verzichten. Bzw. als Zusatz würde ich gerne beide Möglichkeiten anbieten, Java als auch php (Schönheit… ), aber zuerst sollte der PHP Teil funktionieren.

Auch wenn mich dieser EU bullshit relativ ankotzt und ich den nie selbst umsetzen würde, so wäre die Lösung deines Problems das manuelle setzen der Cookie variable.
In $_COOKIE befinden sich nur jene vom Browser gesendeten. Wenn du einen solchen cookie bereits vorher “benötigst”, dann mach doch einfach:

Wobei ich nicht verstehe wieso du “true” als wert nimmst… “1” oder gar “” hätten es auch getan :stuck_out_tongue:

Hey White-Tiger,
auch ich halte es für Blödsinn.

Wie kann ich das Cookie manuell setzen beim drücken des Buttons? Bzw. wohin muss ich denn den Befehl stecken?

[quote=“White-Tiger”]
Wobei ich nicht verstehe wieso du “true” als wert nimmst… “1” oder gar “” hätten es auch getan :stuck_out_tongue:[/quote]
Habe ich aus Spaß gemacht =).

“wo” du das setzt musst eigl. du wissen… und wie das geht schrieb ich ja^^
z.B. könntest du dies direkt nach “setcookie()” machen…

Und dein Spaß… naja der kostet jedem user und dem server 4 bytes für “true”^^

Ich verstehe es nicht =(.
Das Problem liegt deiner Meinung aber an der Form, welche den “get” Parameter zu spät übergibt ?
Wird dieser Teil:

if(isset($_POST['cookie_alert_get'])){ setcookie( "cookie_alert", "", strtotime( '+30 days' )); $cookie_alert=''; }
also nach dem drücken des Buttons das erste mal übersprungen ?
Ich bin noch nicht so bewandert mit dem ganzen Zeug, beschäftige mich erst heute mit Cookies.

EDIT:

Ups habe den Teil nicht gesehen. Es scheint als würde es so nicht mehr funktionieren.

EDIT2: Habs hinbekommen =). Musste ein header(‘location:…’) nach dem “setcookie” machen, [Erklärung] weil nach dem Klicken auf dem Button die Form geladen wird.Erst nachdem die Seite neu geladen wird konnte der PHP Code zum setzen des Cookies ausgeführt werden. Mit dem Header(‘location’) wird nun nach dem Einreichen des Get Parameters und dem gesetzten Cookie die Seite nochmal mit der gelöschten Ausgabe neu geladen.

EDIT3: Habe mir aus dem CODE eine Funktion gebastelt, weil ich diese Ausgabe in dieser Form öfters nutzen möchte. Ich habe nur das Problem beim Austauschen mit der Variablen.
[gelöst]

EDIT4:
Ich habe den Variablen return angehängt nun Funktioniert die Ausgabe, würde ich die Funktion im HTML Code ausgeben. Aber hier habe ich das Problem dass sich in meinem Code ein “header: Location” befindet, welches sich zwischen HTML Code nicht gut macht.
Irgendwie erreiche ich die Variable im HTML aus dem Template nicht $cookie_alert (global machen habe ich bereits versucht). Außerdem scheint die Überprüfung if(isset($_COOKIE["$name_cookie"])) nicht zu funktionieren… Der Container wird nie gelöscht obwohl das cookie gesetzt wird.

[code]
$cookie_alert=’’;

function warntext( $post_cookie, $name_cookie, $var_cookie, $text_cookie)
{
if(isset($_POST["$post_cookie"])){
setcookie("$name_cookie", ‘’, strtotime( ‘+30 days’ ));
// header(‘Location: index.php?site=’.$site.’’);
}
if(isset($_COOKIE["$name_cookie"]))
{
return $var_cookie=’’;
} else {
return $var_cookie=’

’.$text_cookie.’
’;
}
}

warntext( “cookie_alert_get”, “cookie_alert”, “$cookie_alert”, “Wir verwenden Cookies …”);[/code]

Ausgabe nach wie vor im body: