Bongo: Design per Cookie merken

Hallo Leute,

Ich habe eine Startseite(index.html) auf der sich 2 Bilder(Button) befinden.
Einer führt zu einem HTML-Design(index2.html) und eine zu eine Flash-Design(index3.html).

Ich möchte per Cookie erreichen, dass wenn man beim ersten Aufrufen der Startseite(index.html) eines der beiden Designs(durch klicken auf den jeweiligen "Button") auswählt und dann auf dieses weiter geleitet wird, sich der Browser das Design, welches ich gewählt habe merkt und das Design bei jedem weiteren Aufruf der Startseite(index.html) aufgerufen wird. -ich hoffe, ich hab das verständlich ausgedrückt.. der Satz kommt mir komisch vor-

Beispiel:
Ich rufe die Startseite auf(www.domain.de/index.html).
Da klicke ich dann auf einen Link(also den Button), der mich zu einem der 2 Designs führt(www.domain.de/index2.html).

Wenn ich jetzt wieder auf die Startseite gehe(www.domain.de/index.html), soll mich dieser Cookie sofort auf das Design(www.domain.de/index2.html) weiter leiten, dass ich beim ersten Aufrufen gewählt habe.

Kurz gesagt, der Cookie soll sich merken welchen Link ich geklickt habe und diese Auswahl bei jedem weiteren Aufrufen für mich erledigen, so dass ich nicht bei jedem Aufruf der Seite erst ein Design wählen muss.

Ich kenne mich in HTML und css aus aber ich habe keine Ahnung wie so ein Cookie funktioniert.
Ich habe mir schon Anleitungen durchgelesen und versucht so ein Cookie selber zu erstellen aber ich bin jedes mal wieder gescheitert(ich hab mehrere Stunden dran gesessen).

Kann mir jemand weiter helfen? Ich bedanke mich jetzt schon für die Mühe.

MFG,

Bongo

  1. ahoi!
    spontan würd ich mal folgendes sagen:

    <?php  
    // hier wird nen cookie gesetzt setcookie("COOKIE-NAME","COOKIE-INHALT");  
    if($_REQUEST['black']) { setcookie("DesignAuswahl", "black"); }  
    if($_REQUEST['pink']) { setcookie("DesignAuswahl", "pink"); }  
      
      
      
    // überprüfen ob cookie bereits gesetzt wurde  
    if(isset($_COOKIE['DesignAuswahl'])) {  
    $design = $_COOKIE["DesignAuswahl"];  
    //falls vorhanden wird direkt weitergeleitet. wenn mehr als zwei design  
    //verwendet werden solltest du aber switch() verwenden  
    if($design == "black") { header("location: index1.html"); }  
    if($design == "pink") { header("location: index2.html"); }  
    } else {  
    echo"bitte auswahl treffen!<br>  
    <form><input type=\"submit\" name=\"black\" value=\"Black\"> oder <input type=\"submit\" name=\"pink\" value=\"Pink\"></form>";  
    //falls nicht gesetzt wird hier gefragt  
    }  
      
    ?>
    

    aber solltest du auf die idee kommen später einmal um die 10 verschiedene designs zu verwenden, sollte man da nicht dieses plumpe beispiel von mir benutzen!

    man kann übrigends auch eine art verfallsdatum für den cookie setzen

    mfg sgtigram

    1. Hello,

      spontan würd ich mal folgendes sagen:

      Für spontan sieht das doch schon gut aus.
      Nur sollte man Location-Header immer als vollständige URL angeben. Das ist so vorgesehen, auch wenn es meistens anders "funzt".
      Und dann sollte man isset() auch konsequent einsetzen.
      Und auch wenn der Cookie das erste Mal gesetzt wird, muss zum Wunschdesign umgeleitet werden.

      Alternativ kann man sich das Weiterleiten auch komplett sparen und stattdessen die relevanten Teile direkt in die index.php _einbinden_

      <?php

      // hier wird nen cookie gesetzt setcookie("COOKIE-NAME","COOKIE-INHALT");

      if(isset($_REQUEST['black']))
        {
            setcookie("DesignAuswahl", "black");
            $design = 'black';
        }
        if(isset($_REQUEST['pink']))
        {
            setcookie("DesignAuswahl", "pink");
            $design = 'pink';
        }

      // überprüfen ob cookie bereits gesetzt wurde

      if(isset($_COOKIE['DesignAuswahl']))
        {
            $design = $_COOKIE["DesignAuswahl"];
        }

      //falls vorhanden wird direkt weitergeleitet. wenn mehr als zwei design
      //verwendet werden solltest du aber switch() verwenden

      if($design == "black")
        {
            header ('Location: www.example.org/index_black.php';
        )
        elseif($design == "pink")
        {
            header ('Location: www.example.org/index_pink.php');

      }

      else
        {
            ## Normaldesign
            echo"bitte auswahl treffen!<br>
           <form><input type="submit" name="black" value="Black"> oder
           <input type="submit"     name="pink" value="Pink"></form>";
           //falls nicht gesetzt wird hier gefragt

      }

      ?>

      
      >   
        
        
      Liebe Grüße aus dem schönen Oberharz  
        
        
      Tom vom Berg  
      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
        
      
      -- 
       ☻\_  
      /▌  
      / \ Nur selber lernen macht schlau  
      <http://bergpost.annerschbarrich.de>
      
      1. ahoi

        Und auch wenn der Cookie das erste Mal gesetzt wird, muss zum Wunschdesign umgeleitet werden.

        wird es doch! deswegen kommt ja das if-request dings VOR der cookieabfrage.
        das bedeutet auch wenn der cookie grade eben erst gesetzt wurde, wird man weitergeleitet.

        Alternativ kann man sich das Weiterleiten auch komplett sparen und stattdessen die relevanten Teile direkt in die index.php _einbinden_

        ist mir schon klar ;P wollte nur konkret auf seine wünsche eingehen da ich den beitrag so interpretiert habe das er nicht sehr viel von php versteht. daher wäre irgendwelches praktisches schnikschnak nur unübersichtlich für einen PHP-neuling

        mfg sgtigram

        1. Hello,

          Und auch wenn der Cookie das erste Mal gesetzt wird, muss zum Wunschdesign umgeleitet werden.

          wird es doch! deswegen kommt ja das if-request dings VOR der cookieabfrage.
          das bedeutet auch wenn der cookie grade eben erst gesetzt wurde, wird man weitergeleitet.

          Das ist zwar nett gedacht von Dir, aber die Umleitung machst Du abhängig von $_COOKIE. Das hat aber erst beim nächsten Request den passenden Inhalt.

          SetCookie()merkt das Cookie nur vor in den Response-Headern. Damit es dann in $_COOKIE auftaucht, muss die Response zum Client geschafft werden, dieser das Cookie akzeptieren und _beim__nächsten__Request wieder mitsenden an den Server.

          Alternativ kann man sich das Weiterleiten auch komplett sparen und stattdessen die relevanten Teile direkt in die index.php _einbinden_

          ist mir schon klar ;P wollte nur konkret auf seine wünsche eingehen da ich den beitrag so interpretiert habe das er nicht sehr viel von php versteht. daher wäre irgendwelches praktisches schnikschnak nur unübersichtlich für einen PHP-neuling

          Du hast das ja auch sehr nett vorbereitet für Bongo und mit Kommentaren versehen. Sind eben nur ein paar kleinere handwerkliche und ein Denkfehler drin gewesen :-))

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. moin,

    Ich kenne mich in HTML und css aus aber ich habe keine Ahnung wie so ein Cookie funktioniert.

    Du hast den Themenbereich PHP gewählt. Realisiere damit zunächst eine Session für Deinen URL, d.h., es wird ein Cookie gesetzt, der über die gesamte Browser-Sitzung eine konstante Session-ID hat. Das wäre der Anfang, der mit PHP recht einfach zu machen ist.

    Diese Session-ID steht Dir dann serverseitig zur Verfügung und Du kannst zu dieser SID in einer sog. Session-Table benutzerdefinierte Daten hinterlegen.

    Hotti