/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Serialize og cookies
Fra : Stefan McKinnon Edwa~


Dato : 06-08-03 17:09

Jeg har et problem med mit php. Jeg ønsker at gemme en array i en cookie, og
til det formål har jeg så læst, at man kan bruge "serialize" og
"unserialize" til at konventerere f.eks. en array til en streng, som så kan
gemmes i en cookie.
Hvis jeg selv kører koden:

$a = array(1 => "one", 2 => "two", 3 => "three");
$s = serialize($a);
echo $s;
$b = unserialize($s);
print_r($b);

Får jeg outputtet som forventet:
a:3:{i:1;s:3:"one";i:2;s:3:"two";i:3;s:5:"three";}
Array
(
[1] => one
[2] => two
[3] => three
)

Men prøver jeg derimod først at gemme $s i en cookie, så sker der åbenbart
sjove sager med strengen, for når jeg henter den ud af cookien igen, kan jeg
ikke unserialize den. Den returnerer ganske enkelt "False".
Jeg har prøvet med base64_encode & base64_decode, men det ser hellerikke ud
til at virke. Nogen forslag?


Mvh. Stefan McKinnon Edwards

PS. Kunne/skulle jeg måske gemme det i sessions? Ville det give nogen
forskel??



 
 
Anders K. Madsen (06-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 06-08-03 18:27

On Wed, 6 Aug 2003 18:09:10 +0200
"Stefan McKinnon Edwards" <sme@iysik.com> wrote:

[snip]
> Men prøver jeg derimod først at gemme $s i en cookie, så sker der åbenbart
> sjove sager med strengen, for når jeg henter den ud af cookien igen, kan jeg
> ikke unserialize den. Den returnerer ganske enkelt "False".
[snip]

Har du tjekket cookien? Hvilken værdi bliver sat der?
Mvh.
   Madsen

--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Morten Winkler Jørge~ (07-08-2003)
Kommentar
Fra : Morten Winkler Jørge~


Dato : 07-08-03 06:58



> PS. Kunne/skulle jeg måske gemme det i sessions? Ville det give nogen
> forskel??

Hvis arrayet kun skal bruges under dette besøg på siden og ikke gemmes til
næste gang brugeren kommer forbi, vil jeg endog gå så vidt som til at sige
at så SKAL du lære at bruge sessions. Det gør dit liv så utroligt meget
nemmere og er, rent saktisk, skabt til formålet.


Morten


Stefan McKinnon Edwa~ (07-08-2003)
Kommentar
Fra : Stefan McKinnon Edwa~


Dato : 07-08-03 18:37


"Morten Winkler Jørgensen" <mwj@INGEN_SPAM_TIL_MIG.mip.sdu.dk> wrote in
message news:bgspd8$pj5$1@news.net.uni-c.dk...
>
>
> > PS. Kunne/skulle jeg måske gemme det i sessions? Ville det give nogen
> > forskel??
>
> Hvis arrayet kun skal bruges under dette besøg på siden og ikke gemmes til
> næste gang brugeren kommer forbi, vil jeg endog gå så vidt som til at sige
> at så SKAL du lære at bruge sessions. Det gør dit liv så utroligt meget
> nemmere og er, rent saktisk, skabt til formålet.
>
>
> Morten
>

Sjovt nok kom jeg også i tanke om, at sessions ville være det bedste til
lige netop dét, men jeg skal stadig gemme et array (en indstilling for

siden) til senere brug. Derfor skal jeg vil jeg gemme et array i en cookie.
Jeg kunne sagtens bruge en split-funktion, men da arrayen bliver genereret
af en formular med flue-ben, betyder det at værdierne jeg skal bruge
optræder som nøgler, mens værdien af nøglerne bliver sat til "on": Array (1
=> "on", 4 => "on"); // etc. Og da begge arrays skal bruges nogenlunde ens,
ville det være meget lettere hvis de optrådte på samme måde, dvs. enten er
værdierne i nøglerne eller også er værdierne i værdierne (hvis I ved hvad
jeg mener!).

Men jeg forstår bare ikke hvorfor min cookie smadrer serialize-strengen...



Martin Sveegaard (07-08-2003)
Kommentar
Fra : Martin Sveegaard


Dato : 07-08-03 19:37

On Wed, 6 Aug 2003 18:09:10 +0200, "Stefan McKinnon Edwards"
<sme@iysik.com> wrote:

>Jeg har et problem med mit php. Jeg ønsker at gemme en array i en cookie, og
>til det formål har jeg så læst, at man kan bruge "serialize" og
>"unserialize" til at konventerere f.eks. en array til en streng, som så kan
>gemmes i en cookie.
>Hvis jeg selv kører koden:
>
>$a = array(1 => "one", 2 => "two", 3 => "three");
>$s = serialize($a);
>echo $s;
>$b = unserialize($s);
>print_r($b);
>
>Får jeg outputtet som forventet:
>a:3:{i:1;s:3:"one";i:2;s:3:"two";i:3;s:5:"three";}
>Array
>(
>[1] => one
>[2] => two
>[3] => three
>)
>
>Men prøver jeg derimod først at gemme $s i en cookie, så sker der åbenbart
>sjove sager med strengen, for når jeg henter den ud af cookien igen, kan jeg
>ikke unserialize den. Den returnerer ganske enkelt "False".
>Jeg har prøvet med base64_encode & base64_decode, men det ser hellerikke ud
>til at virke. Nogen forslag?
>
>
>Mvh. Stefan McKinnon Edwards
>
>PS. Kunne/skulle jeg måske gemme det i sessions? Ville det give nogen
>forskel??
>
Prøv at se dette fra en kommentar i manualen:
http://dk2.php.net/manual/en/function.serialize.php :03-Jan-2003 11:27

SETTING THE COOKIE OBJECT
setcookie("cookie_name", urlencode(serialize($theobject)),
$cookielife);

READING THE COOKIE OBJECT
$theobject = unserialize(urldecode($_COOKIE["cookie_name"]));

(Om det osse kan gøre sig gældende i dit tilfælde med et array er da
værd at afprøve.)

MVH Martin S

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste