Avatar billede tbsandau Novice
13. juli 2004 - 16:26 Der er 41 kommentarer og
1 løsning

Theme system med cookie

Jeg er ved at lave et theme system som på www.madsass.dk...

Indtil vidre ser min kode således ud:
<?
if ($style == blue){
setcookie ("style", "", time() - 3600);
setcookie("style", "blue.css");
echo $_COOKIE[style];

} else if ($style == standard ){
setcookie ("style", "", time() - 3600);
setcookie("style", "style.css");
echo $_COOKIE[style];

}else{
echo $style;
}
?>

Så kunne godt tænke mig at vide hvad jeg har gjort galt da den ikke gemmer noget i en cookie, eller i hvert fald henter den ikke oplysningen frem.

Håber der er nogen der vil hjælpe!
Avatar billede nikolajdu Nybegynder
13. juli 2004 - 16:28 #1
Du trækker jo en time fra den aktuelle tid - Så udløber cookien jo.

setcookie ("style", "", time() + 3600);
Avatar billede nikolajdu Nybegynder
13. juli 2004 - 16:29 #2
if ($style == blue){
setcookie ("style", "blue.css", time() + 3600);
echo $_COOKIE[style];
Avatar billede tbsandau Novice
13. juli 2004 - 17:22 #3
Ok, har du mulighed for lave hele koden om til det du mener det skal være, er ikke helt sikker på jeg forstår hvad du mener?

Please, be be, be om :D
Avatar billede nikolajdu Nybegynder
13. juli 2004 - 19:35 #4
<?php
if ($style == "blue"){
setcookie ("style", "blue.css", time() + 3600);
echo $_COOKIE[style];

} else if ($style == "standard" ){
setcookie ("style", "standard.css", time() + 3600);
echo $_COOKIE[style];

}else{
echo $style;
}
?>
Avatar billede tbsandau Novice
13. juli 2004 - 21:55 #5
Virker stadig ikke:

www.zniffer.dk/v81/theme.php
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 02:00 #6
<?php
if (isset($_GET["style"]) && $_GET["style"] == "blue"){
setcookie ("style", "blue.css", time() + 3600);
echo $_COOKIE[style];

} else if (isset($_GET["style"]) && $_GET["standard"] ){
setcookie ("style", "standard.css", time() + 3600);
echo $_COOKIE[style];

}else{
echo $_GET["style"];

?>
Avatar billede tbsandau Novice
14. juli 2004 - 09:33 #7
virker stadig ikke :/
Avatar billede tbsandau Novice
14. juli 2004 - 09:51 #8
Det virker heller ikke helt logisk det du har skrevet anden gang :/ synes jeg?!
Avatar billede tbsandau Novice
14. juli 2004 - 09:51 #9
Vil du egentlig prøve at få tilsendt filen?
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:02 #10
hvor kommer $style fra - er det noget som står i sidens adressefelt? Taster brugerne det ind i en formular eller er det noget helt andet?
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:02 #11
ah...nu ser jeg det. Så kan jeg lære at kigge bedre efter :-)
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:12 #12
Har du prøvet med den her:

<?php
include("include/ressources.php");
$style = $_GET['style'];
switch($style) {
    case "blue": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "blue.css");
        testVar("blue cookie", $_COOKIE[style]);
    };break;
    case "standard": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "style.css");
        testVar("standard cookie", $_COOKIE[style]);
    };break;
    default: {
        echo ($style);
    }
}
?>
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:12 #13
sorry - var lidt for hurtig. Det skulle have været

<?php
$style = $_GET['style'];
switch($style) {
    case "blue": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "blue.css");
        testVar("blue cookie", $_COOKIE[style]);
    };break;
    case "standard": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "style.css");
        testVar("standard cookie", $_COOKIE[style]);
    };break;
    default: {
        echo ($style);
    }
}
?>
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:15 #14
...og så får du lige den HELT rigtige kode:

<?php
$style = $_GET['style'];
switch($style) {
    case "blue": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "blue.css");
        echo($_COOKIE[style]);
    };break;
    case "standard": {
        setcookie ("style", "", time() + 3600);
        setcookie("style", "style.css");
        echo($_COOKIE[style]);
    };break;
    default: {
        echo ($style);
    }
}
?>
Avatar billede tbsandau Novice
14. juli 2004 - 10:28 #15
Det virker heller ikke, tror jeg har lavet en fejl et andet sted, har du ikke en e-mail jeg kan sende det til?! Hvis du altså har tid og lyst til at se på det?
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:42 #16
prøv den her:

perez@mail.dk
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:46 #17
jeg ved godt det lyder tåbeligt, men hvis jeg klikker 2 gange på enten blue eller standard på www.zniffer.dk/v81/theme.php så virker det...
Avatar billede boomshanka Nybegynder
14. juli 2004 - 10:50 #18
men send mig bare theme.php så kigger jeg på det
Avatar billede tbsandau Novice
14. juli 2004 - 13:35 #19
Har sendt filerne, fra mail tim@zniffer.dk <-- bare så du ik tror det er noget spam crap :D

OG TUSINDE TAK
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 15:03 #20
Der er da ikke noget skummelt i det. Du skifter jo ikke theme før cookien er sat og det bliver den jo første gang og kan så først aflæses anden gang.

<?php
if ($style == "blue"){
setcookie ("style", "blue.css", time() + 3600);
header("location:".$_SERVER["REQUEST_URI"]);

} else if ($style == "standard" ){
setcookie ("style", "standard.css", time() + 3600);
header("location:".$_SERVER["REQUEST_URI"]);

}else{
echo $style;
}
?>
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 15:03 #21
<?php
if (isset($_GET["style"]) && $_GET["style"] == "blue"){
setcookie ("style", "blue.css", time() + 3600);
header("location:".$_SERVER["REQUEST_URI"]);

} else if (isset($_GET["style"]) && $_GET["standard"] ){
setcookie ("style", "standard.css", time() + 3600);
header("location:".$_SERVER["REQUEST_URI"]);

}else{
echo $_GET["style"];

?>
Avatar billede tbsandau Novice
14. juli 2004 - 17:17 #22
virker sq ik du :/
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 18:59 #23
hvis det ikke virker så er din server da helt kaput.
Avatar billede tbsandau Novice
14. juli 2004 - 19:09 #24
skulle ikke undre mig, det er b-one.dk :( DET SUX
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 19:26 #25
Prøv at vise lidt mere af koden. Der må være noget galt andetsteds måske.

<?php

if (isset($_GET["style"]) && $_GET["style"] == "blue"){
    setcookie ("style", "blue.css", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErSguSatDu");
} else if (isset($_GET["style"]) && $_GET["standard"] ){
    setcookie ("style", "standard", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErSguSatDu");
}else{
    echo $_COOKIE["style"];
}

?>
Avatar billede tbsandau Novice
14. juli 2004 - 20:20 #26
Hvis du gir mig din mail kan jeg sende dig filen så du kan se på det?
Avatar billede nikolajdu Nybegynder
14. juli 2004 - 20:23 #27
Det her bør virke. Hvordan vælger du style?
Avatar billede tbsandau Novice
14. juli 2004 - 22:02 #28
www.zniffer.dk/v81/theme.php <-- svar nok? eller hvad vil du mere vide?
Avatar billede nikolajdu Nybegynder
15. juli 2004 - 00:49 #29
Jeg kan jo ikke se din php kode.
Avatar billede tbsandau Novice
15. juli 2004 - 09:49 #30
Har du en mail jeg kan sende til?
Avatar billede nikolajdu Nybegynder
15. juli 2004 - 13:05 #31
nikolajdu3@hotmail.com
Avatar billede tbsandau Novice
15. juli 2004 - 15:03 #32
Tak, har sendt dig en mail fra tim@zniffer.dk :D

TUSINDE TAK FORDI DU GIDER!
Avatar billede boomshanka Nybegynder
15. juli 2004 - 21:43 #33
Så har jeg kigget på din kode, og jeg kan kun give nikolajdu ret - hvis du læser punkt 1 under "Common Pitfalls" her:

http://dk2.php.net/manual/en/function.setcookie.php

så står der at cookies først bliver aktiveret ved reload af siden. Mit forslag ligger også tæt op af nikolajdu - nemlig at du opretter en side som opretter cookien og sætter den til hvad du nu vælger at kalde siden med. Derefter kan du bruge funktionen header() som nikolajdu foreslår og kalde din egen side, eller kalde en ny php-side hvor du henter dit stylesheet med <link rel="stylesheet" type="text/css" href="<?php echo $_COOKIE[style]; ?>" />
Avatar billede tbsandau Novice
16. juli 2004 - 10:16 #34
opretter en side som opretter cookien <-- kan jeg få dig til at uddybe det? er ikke sikker på at jeg ved hvad du mener ?!
Avatar billede nikolajdu Nybegynder
16. juli 2004 - 10:37 #35
<?php
if (isset($_GET["style"]) && $_GET["style"] == "blue"){
    setcookie ("style", "blue.css", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErBlaa");
} else if (isset($_GET["style"]) && $_GET["standard"] || !$_COOKIE["style"]){
    setcookie ("style", "standard", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErSguStandard");
}

$style = $_COOKIE["style"];
?>

<?php
$starttime = microtime();
$startarray = explode(" ", $starttime);
$starttime = $startarray[1] + $startarray[0];
?>

<? include "ipblock/tjek.php"; ?>

<html>

<head>

<meta http-equiv="Content-Language" content="da">

<link rel="shortcut icon" href="ico/favicon.ico">

<link rel=stylesheet href='<? echo $style; ?>'>
Avatar billede nikolajdu Nybegynder
16. juli 2004 - 10:38 #36
if (isset($_GET["style"]) && $_GET["style"] == "blue"){
    setcookie ("style", "blue.css", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErBlaa");
} else if ((isset($_GET["style"]) && $_GET["standard"]) || !$_COOKIE["style"]){
    setcookie ("style", "standard", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErSguStandard");
}
Avatar billede tbsandau Novice
16. juli 2004 - 11:06 #37
<?php
if (isset($_GET["style"]) && $_GET["style"] == "blue"){
    setcookie ("style", "blue.css", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErBlaa");
} else if (isset($_GET["style"]) && $_GET["style"] == "standard" || !$_COOKIE["style"]){
    setcookie ("style", "style.css", (time()+3600), "/");
    header("location:".$_SERVER["PHP_SELF"]."?styleErSguStandard");
}

$style = $_COOKIE["style"];
?>

Har ændret lidt i den så den kunne finde standard theme, ville den ikke før?! Og nu skal man trykke 2 gange igen før den skifter, er det derfor?
Avatar billede nikolajdu Nybegynder
16. juli 2004 - 13:06 #38
fatter simpelthen ikke hvis det her ikke virker.

    if (isset($_GET["style"]) && $_GET["style"] == "blue"){
        setcookie ("style", "blue.css", (time()+3600), "/");
        header("location:$_SERVER[PHP_SELF]?styleErBlaa");
    } else if (isset($_GET["style"]) && $_GET["style"] == "standard" || !$_COOKIE["style"]){
        setcookie ("style", "style.css", (time()+3600), "/");
        header("location:$_SERVER[PHP_SELF]?styleErSguStandard");
    }
Avatar billede tbsandau Novice
16. juli 2004 - 18:10 #39
hehe, ok! Men kom med et svar så kan du få nogle point! Fortjener i begge 2 efter at have prøvet at hjælpe mig så iherdigt!

Skal i sq have tak for!

boomshanka og nikolajdu kom med et svar hver!
Avatar billede boomshanka Nybegynder
16. juli 2004 - 22:00 #40
Ja det er meget mystisk. Jeg har selv B-one og hos mig virker det fint...men siden det var nikolajdu som kom med løsningen giver du bare point til ham...sgu :-)
Avatar billede tbsandau Novice
16. juli 2004 - 22:33 #41
ok, så venter jeg bare på et svar
Avatar billede nikolajdu Nybegynder
17. juli 2004 - 05:53 #42
JEg synes da vi ka dele. Vi har begge to kæmpet for at fatte en brik :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester