Ich möchte Besuchern einer Page ermöglichen, sich ihr individuelles Fenster (Holz oder Alu und verschiedene Farben) selbst zusammenzustellen. Das Erscheinungsbild der Fenster wird über CSS-Dateien geregelt.
Soweit sogut... jetzt aber zu dem Skript und dem damit verbundenen Problem:
Habe eine Textdatei mit folgendem Inhalt:
Holz normal|holz/standard.css|
Holz blau|holz/blau.css|
Alu normal|alu/standard.css|
Alu blau|alu/blau.css|
Alu rot|alu/rot.css|
Alu schwarz|alu/schwarz.css|
Diese Datei soll jetzt mit folgendem Code eingelesen werden. Dabei soll ein Formular mit Select-Feld erstellt werden. Das klappt auch wunderbar...
Der Besucher kann jetzt mittels eines Drop-Down-Menüs sein Wunschfenster auswählen. Dadurch wird ein Cookie geschrieben, das als Wert den Pfad zur jeweiligen CSS Datei enthält.
Wie man aber schon an
sehen kann, lese ich den Ordner und die css-Datei in einzeln in die Variablen $folder und $css ein. Das hat den Grund, dass ich unbedingt auf den folgenden Seiten auf die Variable $folder zugreifen können muss.
Jetzt mein Problem:
Wie kann ich es machen, dass ich die Variable $folder in einem Cookie speicher, so dass ich den Inhalt der Variablen auf den folgenden Seiten zur Verfügung habe?
Der Wert der Variablen $folder soll dabei immer der sein, der in der selben Zeile der Textdatei steht, wie die gewählte CSS Datei.
Ich hoffe, ich habe mich verständlich ausgedrückt und ihr wisst, was ich erreichen will.
Habe schon sämtliche Dinge versucht, aber als Inhalt der Variablen $folder bekomme ich immer nur "alu", was dem letzten Wert in der Textdatei entspricht.
Soweit sogut... jetzt aber zu dem Skript und dem damit verbundenen Problem:
Habe eine Textdatei mit folgendem Inhalt:
Holz normal|holz/standard.css|
Holz blau|holz/blau.css|
Alu normal|alu/standard.css|
Alu blau|alu/blau.css|
Alu rot|alu/rot.css|
Alu schwarz|alu/schwarz.css|
Diese Datei soll jetzt mit folgendem Code eingelesen werden. Dabei soll ein Formular mit Select-Feld erstellt werden. Das klappt auch wunderbar...
PHP-Code:
<?
if($HTTP_COOKIE_VARS['page_style']){
if($HTTP_POST_VARS['change']=="true"){
$setstyle=$HTTP_POST_VARS['setstyle'];
}
else{
$setstyle=$HTTP_COOKIE_VARS['page_style'];
}
}
else{
$setstyle="standard/default.css";
}
setcookie("page_style",$setstyle,time()+3600,"/");
?>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="styles/<? echo $setstyle?>">
</head>
<body>
<?
// --------------------------------------------------------------------------------------------
// Form öffnen
// --------------------------------------------------------------------------------------------
$form_opening = "
<form action=\"".$PHP_SELF."\" method=\"post\">
<input type=\"hidden\" name=\"change\" value=\"true\">
<select name=\"setstyle\">
<option value=\"standard/default.css\">auswählen";
// --------------------------------------------------------------------------------------------
// Option-Tags
// --------------------------------------------------------------------------------------------
$option = "<option value=\"--wert--\">--text--";
// --------------------------------------------------------------------------------------------
// Form schließen
// --------------------------------------------------------------------------------------------
$form_closing = "
</select>
<input type=\"submit\" value=\"go\">
</form>";
// --------------------------------------------------------------------------------------------
// Hauptprogramm
// --------------------------------------------------------------------------------------------
# Default-Styledatei...
if(! isset($styledatei) ){
$styledatei = "data/style.txt"; //das ist die Datei mit obigem Inhalt
}
# text ersetzen
function OptionReplace ($template, $optiontext, $optionvalue){
$work = $template;
$work = str_replace("--wert--",$optionvalue,$work);
$work = str_replace("--text--",$optiontext,$work);
return $work;
}
# Öffne Styledatei
$offnen = fopen("$styledatei","r");
$eintraege = 0;
while (!feof($offnen)) {
$buffer = fgets($offnen, 4096);
$eintrag[] = $buffer;
if( ereg("([0-9])",$buffer) ){
$eintraege++;
}
}
fclose($offnen);
// Formular öffnen
print $form_opening;
// erzeuge Optiontags
foreach( $eintrag as $zeile ){
list($text,$wert) = explode("|",$zeile);
list($folder,$css) = explode("/",$wert);
print OptionReplace($option,$text,$wert);
}
// Formular schliessen
print $close_select;
print $form_closing;
?>
</body>
</html>
Wie man aber schon an
PHP-Code:
foreach( $eintrag as $zeile ){
list($text,$wert) = explode("|",$zeile);
list($folder,$css) = explode("/",$wert);
print OptionReplace($option,$text,$wert);
}
Jetzt mein Problem:
Wie kann ich es machen, dass ich die Variable $folder in einem Cookie speicher, so dass ich den Inhalt der Variablen auf den folgenden Seiten zur Verfügung habe?
Der Wert der Variablen $folder soll dabei immer der sein, der in der selben Zeile der Textdatei steht, wie die gewählte CSS Datei.
Ich hoffe, ich habe mich verständlich ausgedrückt und ihr wisst, was ich erreichen will.
Habe schon sämtliche Dinge versucht, aber als Inhalt der Variablen $folder bekomme ich immer nur "alu", was dem letzten Wert in der Textdatei entspricht.
Kommentar