Avatar billede nko Nybegynder
08. december 2011 - 23:37 Der er 3 kommentarer

Cookie vil bare ikke virke

Hej allesammen.

Jeg sidder med et eksamensprojekt der skal afleveres den 16. Hjemmesiden skal sætte en cookie når man klikker på et link, og indholdet af denne cookie skal så bestemme hvilket stylesheet hjemmesiden skal benytte. Det hele har virket super godt indtil idag hvor jeg er kommet til at ændre et eller andet. Jeg ved bare ikke hvad desværre. Tidligere havde jeg problemer med at få min cookie sat, men det var fordi jeg ikke havde defineret domænet. Det har jeg nu, men det virker stadigt ikke.

I øvrigt har jeg uden held testet ved at sætte domænet til:
- nkierkgaard.eu/
- www.nkierkgaard.eu/
- http://www.nkierkgaard.eu/
- nkierkgaard.eu
- www.nkierkgaard.eu
- http://www.nkierkgaard.eu

Min kode er følgende:

if(isset($_REQUEST['st'])) {
    echo "Request is set to ".$_REQUEST['st'].", ";
    if (setcookie('st', $_REQUEST['st'], time()+(24 * 60 * 60 * 365), '/', 'nkierkgaard.eu/')) {
        echo "HOORAY... Cookies for everyone";
        $style = $_COOKIE['st'];
    } else {
        echo "Cookie failed to set ";
    }
} else if(isset($_COOKIE['st'])) {
    $style = $_COOKIE['st'];
}
//Set standard style
if(!isset($style) or $style == "") {
    //We set a standard stylesheet
    $style = "main";
}

Håber der er en eller anden der kan se problemet :/
Avatar billede olebole Juniormester
09. december 2011 - 01:39 #1
<ole>

Din linje echo "Request is set to ..." gør, at du ikke efterfølgende kan sætte en cookie. En cookie sættes i dokumentets HTTP-header, så når du er begyndt at skrive noget ud til siden, er det derfor for sent at sætte en header - HTTP-header'en har forladt serveren.

Hvis du ikke får en fejl, kunne det tyde på, din opsætning undertrykker fejl. Prøv at skrive dette allerøverst i dokumentet:

error_reporting(E_ALL);

- så du kan se dine fejl.

/mvh
</bole>
Avatar billede nko Nybegynder
09. december 2011 - 11:08 #2
Hmm. Det hjalp lidt men det fungerer stadigt ikke. Toppen af min indexfil ser nu sådan ud, men jeg får stadigt ikke nogle fejlmeddelselser. Med dette får jeg outputtet "HOORAY... Cookies for everyone", men cookien bliver ikke sat. i kan se hvad der sker på www.nkierkgaard.eu ved at klikke på "designknapperne nede til venstre".

<?php session_start();
error_reporting(E_ALL);

if(isset($_REQUEST['st'])) {
    if (!setcookie('st', $_REQUEST['st'], time()+(24 * 60 * 60 * 365), '/', 'nkierkgaard.eu/')) {
        echo "cookie failed to set ";
    } else {
        $style = $_COOKIE['st'];
        echo "HOORAY... Cookies for everyone ".$_REQUEST['st'].", ".$_COOKIE['st'].$style;
    }
} else if(isset($_COOKIE['st'])) {
    $style = $_COOKIE['st'];
}
//Set standard style
if(!isset($style) or $style == "") {
    //We set a standard stylesheet
    $style = "main";
}

<!DOCTYPE html head body osv...
Avatar billede olebole Juniormester
09. december 2011 - 17:52 #3
Ved du godt, at du ikke kan aflæse en cookie i samme dokument, som den sættes i? Du kan først aflæse den efter et sideskift
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