Autor Zpráva
martas
Profil *
Dobrý den,

chci si uložit do cookies pole, které nejdřív převedu na řetězec pomocí funkce serialize() a následně je pomocí unserialize() převést zpět do pole. Jenže mi to nějak ne a ne fungovat.

$kolacek = array ("123" => "test");

$uloz = serialize($kolacek);
setcookie("zkouska", "".$uloz."", time() + 30*24*60*60);

echo print_r(unserialize($_COOKIE['zkouska']));


Ale vypíše mi to jen číslo 1 (slovy jedna), nic víc. Když to zkusím bez cookies (jen přes proměnnou), tak to funguje, ale s cookies mi to nechce šlapat. Na webu jsem všude četl, že by to mělo bezprolémů fungovat, ale nějak mi to nejede...
tiso
Profil
COOKIE kontroluj až na ďalšej stránke, nie na tej ktorá ho nastavuje. To nepôjde.
martas
Profil *
tiso: tak v tomhle to nebude... Hodil jsem to přečtení na jinou stránku a stejně se nic neděje, respektive děje, ale beze změny - pořád se mi zobrazuje jen jednička...
martas
Profil *
zkoušel jsem taky funkce implode() a následně explode(), ale to mi zase rozhodí klíče - takže z původního 123 => test je po opětovném převedení na pole výsledek 1 => test...

Což je taky celkem na prd :(
martas
Profil *
oprava, výsledek je 0 => test
martas
Profil *
no tak nic :)... poradil jsem si nakonec sám... Kdyby někdo v budoucnu potřeboval tak jsem to pořešil takto:

$kolacek = array ("123" => "test");

$uloz = base64_encode(serialize($kolacek));
setcookie("zkouska", "".$uloz."", time() + 30*24*60*60);

echo print_r(unserialize(base64_decode($_COOKIE['zkouska'])));
Leo
Profil
Nechcete si nejdriv vypsat samotne $_COOKIE['zkouska']? :-) Leo
Leo
Profil
Nejspis mate zapnute automaticke escapovani uvozovek (magic_quotes_gpc), to ma vliv i na cookies, a vy tam uvozovky mate. Leo
martas
Profil *
Leo: ano, to bude ono... Už mě to také napadlo, ale už mi to funguje i tak...
Leo
Profil
No, mam pocit, ze base64 kodovana hodnota muze obsahovat = a to je v hodnote cookie zakazany znak, Leo
nightfish
Profil
echo print_r(unserialize($_COOKIE['zkouska']));
echo print_r(...);
co to je za konstrukci? je logické, že to pak vypíše buď 0 (false) nebo 1 (true), podle výsledku funkce print_r()
tiso
Profil
Úvodzovky mi nenapadli...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: