Avatar billede 7th Praktikant
25. oktober 2003 - 01:06 Der er 9 kommentarer og
2 løsninger

Serialize cookie

Hvad gør jeg galt? Jeg får denne fejlmeddelelse, unserialize(): Error at offset 9 of 22 bytes on line 8.

// opret array i cookie
setcookie ("abc" , "".serialize (array ($_GET['val']))."" , time() + 60 , " ");

// udtræk array fra cookie - linie 8
$test = unserialize ($_COOKIE['abc']);

// tilføj værdi til array
$test[] = $_GET['val'];

// gem array i cookie
$_COOKIE['abc'] = serialize ($test);

// udskriv array fra cookie
echo implode ("" , unserialize ($_COOKIE['abc']));
Avatar billede spamd Nybegynder
25. oktober 2003 - 01:22 #1
$_COOKIE kommer fra browserens request og ændres ikke ved setcookie().
setcookie() sender blot en http header til browseren. $_COOKIE bliver først ændret ved næste request fra browser.

Du kan gøre to ting:

1. Redirect til ny/samme side efter setcookie()
2. Tildel $_COOKIE['abc'] værdien efter setcookie().
Avatar billede detox Nybegynder
25. oktober 2003 - 01:30 #2
Ellers brug base64_encode(), men korrekt at siden skal refreshes.

setcookie("abc" , base64_encode(serialize($_GET['val'])), time() + 60);
print_r(unserialize(base64_decode($_COOKIE['abc'])));
Avatar billede 7th Praktikant
25. oktober 2003 - 01:39 #3
Jeg mener ikke mit problem umiddelbart ligger ikke i refresh. Den kode jeg smed er blot et råt udsnit - ikke slavisk gang af mit script. Har lige gang i et trejde testforsøg, men vender snart tilbage...
Avatar billede detox Nybegynder
25. oktober 2003 - 01:45 #4
Måske sådan her, hvis du har brug for den array():

setcookie("abc" , base64_encode(serialize(array($_GET['val']))), time() + 60);
echo implode("",unserialize(base64_decode($_COOKIE['abc'])));
Avatar billede 7th Praktikant
25. oktober 2003 - 01:51 #5
Hvis man opretter en cookie på side.php - kan man så godt bruge samme cookie på side.php?val=something?
Avatar billede detox Nybegynder
25. oktober 2003 - 02:10 #6
Ja, det er jo i grunden samme side, så det kan du godt.
Avatar billede 7th Praktikant
25. oktober 2003 - 02:18 #7
Kom i tvivl, for nu kan jeg ikke få det til at virke, kan ikke tilføje værdi til mit array. Tror lige jeg er nød til at tænke mig til et nyt testforsøg, inden jeg fyrer endnu et dumt spørgsmål af :o)
Avatar billede 7th Praktikant
25. oktober 2003 - 06:33 #8
Jeg kan ikke rigtig få det til at virke som jeg vil have det til, men prøver igen imorgen. Har sikkert et nyt spørgsmål imorgen, ellers skal jeg nok lukke.
Avatar billede erikjacobsen Ekspert
25. oktober 2003 - 09:17 #9
Du allerførste eksempel virker måske godt nok, hvis du blot kører en
stripslashes før du kalder unserialize. Det er et gæt, for det afhænger
selvfølgelig af diverse opsætninger...
Avatar billede 7th Praktikant
26. oktober 2003 - 05:16 #10
Meningen var at jeg skulle bruge det til en indkøbskurv, men jeg synes det er lidt for besværligt, så har valgt at lave det via sessions i stedet for. Anyway hvis detox smider et svar for ulejligheden, så kan jeg lukke spørgsmålet :o)
Avatar billede detox Nybegynder
26. oktober 2003 - 10:03 #11
Jamen, det gør jeg da så c",)
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