Formularangaben in Cookie speichern

acquire

Mitglied
Hallo!

Leider kann mir mein achso tolles PHP Buch nicht verraten, wie ich die Angaben eines Formulars in einem Cookie speichern kann.

Hier mein Projekt:
Ich möchte ein Formular machen, mit dem man das Design ändern kann. Bei jedem Design werden nur 6 Bilddateien ausgetauscht, der Rest bleibt gleich.
Es sind folgende:
$bildurl1 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/bgcolor_navi_X.gif";
$bildurl2 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/header_ol_X.gif";
$bildurl3 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/header_or_X.gif";
$bildurl4 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/header_ul_ecke_X.gif";
$bildurl5 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/header_ur_X.gif";
$bildurl6 = "file:///C:/AppServ/www/localhost/testserver/mysteryandcrime/alte%20Versionen/Version%201/img/design01/navi_startseite_X.gif";

Das sind die Bilder die sich alle ändern müssten und die sind über die ganze Website verstreut, also nicht hintereinander im Quelltext.
Das einzige was sich von Design zu Design ändert ist der Ordner.
Bei Design 1: img/design01/bilddatei.gif
Bei Design 2: img/design02/bilddatei.gif

Also könnte man das ganze doch auch mit einer Variablen gemacht werden:
img/$nr/bilddatei.gif
Den Wert der Variablen soll nun aus einem Cookie geholt werden und wenn kein Cookie vorhanden ist soll standardmäßig $nr=01 sein.

Außerdem muss auf die Website ein Pulldown Menü in dem man das Design auswählen kann.

Mein Problem ist, das ich nicht weiß wie die Angaben aus dem Formular dann in ein Coockie gespeichert werden , neues Cookie erstellt, wenn nicht vorhanden, alte Werte im Cookie überschreiben.

Und dann muss bei jedem Seitenaufruf ja die Variable aus dem Cookie gelesen werden, damit sie auch ersetzt wird.


Vielen Dank für eure Hilfe im Voraus!

Gruß,
acquire
 
Schau dir die Funktion setcookie an.

Abspeichern mit
PHP:
//Per POST versendetes Formular mit Select-Feld 'design_id', was als Werte die Ordnernamen der einzelnen Designs beinhaltet, vorausgesetzt
//Bsp: <select name="design_id"><option value="design01">Design 1</option></select>
setcookie('design', $_POST['design']);

Auslesen mit
PHP:
$_COOKIE['design']
 
Danke für die Antwort.
Die Funktion setcookie habe ich mir dort schoneinmal angeguckt, hat mir auch geholfen, aber nicht damit, wie ich das, was ausgegeben wird in ein Cookie abspeichere.
Das war mir unklar.

Hier mal mein Quelltext für das Formular:
PHP:
<php
echo "
<form name="design_id" action="setcookie('design', $_POST['design']);" method="post">
<select name="design_id">
<option selected value=design01>Design
<option value=design01>Design 1
<option value=design02>Design 2
</option>
</select>
<input type="submit" value="OK" style="width:30px">
</form>
";
?>

Doch leider klappt das nicht.
Es wird das Pulldown Menü angezeigt, dann den OK Button und dann "; ?> !
Was mache ich denn jetzt wieder falsch?
 
Probier das mal:
PHP:
<?php 
if ($_POST['btn_submit']) {
    setcookie('design', $_POST['design_id']);
}
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>';
?>
 
Hallo!

Klasse funktioniert!
Herzlichen Dank!

Noch eine Frage habe ich:
Wenn ich jetzt den Link zur Bilddatei angeben, wie mache ich das mit dem auslesen aus dem Cookie?
So geht es jedenfalls nicht:
PHP:
/img/<php .$_COOKIE['design']. ?>/header_ol_X.gif
oder so auch nicht:
PHP:
img/<php echo $_COOKIE['design']; ?>/header_ol_X.gif

Währe klasse wenn du mir hier auch die Lösung geben könntest.
Ich suche mal solange weiter im I-Net, ob ich die voielleicht schon finde...

Gruß,
acquire
 
Zuletzt bearbeitet:
Code:
img/<?php echo $_COOKIE['design']; ?>/header_ol_X.gif
Der Opentag fuer PHP-Scripts lautet immernoch <?php und nicht <php.

Gruesse,
sB!
 
Neues Problem!

Hallo!

Ich habe wieder ein Problem.
Das Script hat ja wunderbar geklappt auf einer ansosnten leeren Seite, allerdings funktioniert es auf meiner richtigen nicht mehr!

Dann erhalte ich folgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v092387/design.php:8) in /www/htdocs/v092387/design.php on line 133

Woran kann das liegen?
Die Seite ist als PHP Datei abgespeichert, und der Code auch mit <?php und ?> eingeschlossen. Der Rest ist normales HTML.
Meine Website basiert auf Tabellen. Daran dürfte es auch nicht liegen, oder?
Und in Zeile 133 kann ich kein Fehler finden:
PHP:
setcookie('design', $_POST['design_id'], time()+(60*60*24*365));

Hier nochmal den ganze PHP Code:
PHP:
if ($_POST['btn_submit']) {
    setcookie('design', $_POST['design_id'], time()+(60*60*24*365));
}
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>';

Was ist denn jetzt schon wieder falsch?
Und wenn es funktiniert , aber noch kein Cookie existiert werden auch keine Grafiken angezeigt.
Wie kann ich einstellen das sofort beim Betreten der Seite ein Cookie erstellt wird mit den Wert design01, bevor der Inhalt aus HTML Code geladen wird.
Muss ich das dan davor packen?
ich habe es gemach.
Der Code vor <html> ist folgender:
PHP:
setcookie ("design", design01, time()+(60*60*24*365);
Doch dann erhalte ich folgende Meldung:
Parse error: parse error, unexpected ';' in /www/htdocs/v092387/design.php on line 2
Wieso soll das ; falsch sein?
Das steht sogar unter http://de.php.net/setcookie !

Danke für Hilfe im Voraus!

Gruß,
acquire
 
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v092387/design.php:8) in /www/htdocs/v092387/design.php on line 133
Du darfst vor dem Senden des Cookies bzw. dem Befehl setcookie keine Ausgabe von HTML o.Ä. haben (d.h. auch keine Leerzeichen!).


PHP:
setcookie ("design", design01, time()+(60*60*24*365));
//sah vorher so aus:
//setcookie ("design", design01, time()+(60*60*24*365);
Da fehlte eine Klammer!
 
Hallo!

Danke für die Info!

Aber wie soll ich dass denn dann hinbekommen, wenn vorher kein HTML darf.
Jetzt ist immerhin standardmäßig Ddesign01, weil ich es am Anfang festgelegt habe.
Gibt es eine alternative Funktion zu setcookie, die einfach nur den Inhalt eines bestehenden Cookies ändert und auch funktioniert, wenn HTML vorher da war?

Gruß,
acquire
 
Zurück