Formularangaben in Cookie speichern

Hi!

Danke hat geholfen!

Jetzt sieht es so aus:
PHP:
//Quelltext vor HTML
ob_start (setcookie('design', $_POST['design_id'], time()+(60*60*24*365)));


// Quelltext nach HTML
if ($_POST['btn_submit']) {
    ob_end_flush();
}
echo 'Aktuelle Designauswahl ist "'.$_COOKIE['design'].'"!<br />';
echo '<form name="form_design" action="'.$_SERVER['PHP_SELF'].'"  method="post">
    <select name="design_id">
        <option value="design01">Design 1</option>
        <option value="design02">Design 2</option>
    </select>
    <input type="submit" value="OK" style="width:30px" name="btn_submit">
</form>';
Mein einziges Problem ist jetzt, wie ich es hinbekomme, das beim Betreten der Seite ein Cookie design mit dem Wert design01 entsteht, aber nicht, wenn schon ein Cookie design vorhanden ist.
So habe ich es versucht:
PHP:
if($_COOKIE['design']="") {
setcookie('design', design01, time()+(60*60*24*365));
} else {
echo "";
}
ob_start (setcookie('design', $_POST['design_id'], time()+(60*60*24*365)));
Das geht aber nicht (irgendwie logisch, oder?)
Aber leider weiß ich nicht wie ich es anders machen kann.


Danke für Hilfe im Vorasu!

Gruß,
acquire
 
Probier dasselbe nochmal mit diesen Änderungen an der Abfrage:
PHP:
if($_COOKIE['design'] == "") { 
    setcookie('design', 'design01', time()+(60*60*24*365)); 
} else { 
    echo 'Cookie wurde bereits gesetzt (aktueller Wert: '.$_COOKIE['design'].')'; 
}
Das sollte funktionieren.
 
Zuletzt bearbeitet:
Hallo!

Wow, danke!
Jetzt klappt es wie gewünscht!
Ich habe allerdings das echo leer gelassen, denn sonst wird das ausgegeben und darunter kommt die Website mit dem Design und das sieht merkwürdig aus.
Nochmal Danke!

Gruß,
acquire
 
Ja die Ausgabe sollte auch nur der Veranschaulichung dienen... du könntest, wenn du sowieso nichts ausgibst, dann auch einfach den else-Zweig weglassen.
 
Mir ist gerade was aufgefallen.

PHP:
if($_COOKIE['design'] == "") {
    setcookie('design', 'design01', time()+(60*60*24*365));
}
erstellt kein Cookie, wenn kein Cookie design vorhanden ist, sondern ersetzt nach mehrmaligen aktualisieren der Seite nur den Wert. oder wenn er leer ist (ist er aber nicht).
Warum?
 
mal so probiert?
PHP:
if(!$_COOKIE['design']) { 
    setcookie('design', 'design01', time()+(60*60*24*365)); 
}
 
Ja, und es passiert das selbe.
Es wird kein Cookie erstellt, wenn nicht vorhanden und der inhalt gelöscht.
Liegt das vielleicht an den Funktionen ob_start und ob_end_flush, denn ob_end_flusch löscht denn ja den puffer und damit vielleicht auch den Inhalt des Cookies?
Aber wenn, dann erstellt der Anfang dennoch kein neues Cookie bzw. erstezt den Inhalt nicht wenn es leer ist.

Immer wenn ich die 3. Seite aufrufe können die Bilder nicht mehr ausgerufen werden und in der Anzeige, welches Design gewählt wurde steht nichts!
 
Neu

Jetzt habe ich das Script etwas verändert und nun klappt alles mit den cookies.
Das Problem waren die ob sessionns, die den Wert nicht an den Browser schicken.
So sieht es jetzt aus.
Natürlich habe ich wieder das alte Problem, das ich eine Lösung finden muss, wie ich das Teil innerhalb von dem HTML Script zum laufen bekomme.
Dafür erstelle ich aber mal ein neues Thema.
Danke nochmal für deine Hilfe.
PHP:
$design = "";
if (count($_POST) > 0) {
   $design = $_POST["design_id"];
   setcookie('design', $design, time()+(60*60*24*365));
} else {
   if($_COOKIE['design'] == "") {
       $design = "design01";
       setcookie('design', $design, time()+(60*60*24*365));
   } else {
       $design = $_COOKIE['design'];
   }
}

echo 'Aktuelle Designauswahl ist "'.$design.'"!<br />';
echo '<form name="form_design" action="'.$_SERVER['PHP_SELF'].'"  method="post">
    <select name="design_id">
        <option value="design01">Design 1</option>
        <option value="design02">Design 2</option>
    </select>
    <input type="submit" value="OK" style="width:30px" name="btn_submit">
</form>';
 
Lösung gefunden!

Jetzt habe ich die Lösung in einem anderen Thread hier gefunden.
und so sieht es aus:
PHP:
<?php ob_start();
?>
<html>
<titel>Titel</titel>
<head>


</head>

<body>
<?php
setcookie("name",$name,time()+3600);
?>


</body>

</html>
<?php
ob_end_flush(); ?>
Ich habe die ob Teile falsch benutzt. :-(
 
Zurück