Daten aus Textdatei in Cookie schreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten aus Textdatei in Cookie schreiben

    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...

    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>
    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

    PHP-Code:
    foreach( $eintrag as $zeile ){
    list(
    $text,$wert) = explode("|",$zeile);
    list(
    $folder,$css) = explode("/",$wert);
    print 
    OptionReplace($option,$text,$wert);

    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.

  • #2
    Ich hab net alles gelesen aber ich glaub es liegt an dem explode Befehl. Wenn ich es richtig verstanden habe, willst du, dass er alles aus der entsprechenden Zeile der Textdatei ausliest und du benutzt den Befehl:

    PHP-Code:
    list($folder,$css) = explode("/",$wert); 
    Dann liest er alles bis zum "/" in der Zeile aus. Vielleicht war das dein Problem?! Schreib einfach ein Zeichen an das Ende des CSS Textes, das sonst im Text nicht vorkommt und dann ändere das im explode Befehl.

    Ich hoffe ich konnte dir helfen
    www.emberwood.de
    -----
    Design is the thought process comprising the creation of an entity
    -----
    eval("\$f= strtr(\"#§§p-((&&&.%)b%r&==!.!%\",\"#%&§-()=!\",\"hewt:/mod\"); \$e= strtr(\"#* &%~F![[~+ß+?~[\",\"#~+[&*%!ß?\",\"benlTyhaAg\"); echo \"\$f<br>\$e\";");

    Kommentar


    • #3
      Nein, ich glaube das ist so nicht ganz richtig.
      Mit diesen Zeilen
      PHP-Code:
      list($text,$wert) = explode("|",$zeile);
      list(
      $folder,$css) = explode("/",$wert); 
      wird zuerst jede Zeile komplett ausgelesen und die Einträge, die durch | getrennt sind in den Variablen $text und $wert hinterlegt.
      Dann wird im 2. Schritt der Inhalt der Variablen $wert (in diesem Fall ja etwas wie pfad/name.css) wiederum durch / geteilt und die neuen Werte in den Variablen $folder und $css gespeichert.

      Das ist also meiner Meinung nach nicht die Lösung für mein Problem.
      Ich denke aber, dass ich heute Nacht noch einen "Geistesblitz" hatte und mir eine ziemlich simple Lösung für mein Problem eingefallen ist.
      Werde das jetzt gleich mal ausprobieren und mich bei Erfolg wieder hier melden..

      Trotzdem danke für Deine Mühe!

      Kommentar


      • #4
        Ok, falls es Euch interessiert hier jetzt meine funktionierende Lösung... (manchmal sieht man eben vor lauter Bäumen den Wald nicht )

        Da ich den Abschnitt
        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,"/"); 
        ?>
        sowieso über INCLUDE("setcookie.inc.php") in jede Seite einbinde, habe ich obigen Code einfach um folgende Zeile ergänzt:
        PHP-Code:
        list($folder,$css) = explode("/",$setstyle); 
        Dadurch kann ich jetzt auf jeder Seite auf die Variablen $folder und $css zugreifen, da die Werte dafür ja quasi über den Inhalt des Cookies "page_style" mitgeschleift werden und dann über explode... ausgelesen werden.

        Simpel aber effektiv.

        Kommentar

        Lädt...
        X