Design per Cookie merken
Bongo
- php
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
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
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

--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
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
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
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