Portál AbcLinuxu, 14. listopadu 2025 21:14
V prvním případě (bez uvedení timestamp) se chová prohlížeč naprosto správně. Cookie má expirovat při skončení session, jak se ostatně můžete dočíst v manuálu.
V druhém případě by však cookie měla v prohlížeči vydržet přes 11 dní. Můžete uvést adresu stránek a případně i relevatní fragment PHP kódu? Jinak lze jen těžko věštit.
. Ma chyba... Kazdopadne cookie se mazou i ted :'(. No nechtel jsem davat odkaz predtim, at me nekdo nenarkne z reklamy, ale tady je link: sexta.homeip.net. Jde o to ze uzivateli posilam cookies (WebSex_skin) pro ulozeni skinu, ktery chce na strankach mit. Promena $Set_skin existuje pokud uzivatel chce zmenit skin - lze zmenit budto odkazem v sekci skin nebo primo dopsanim ...&Set_skin=x do URL stranky. Omluvte akorat pomalejsi odezvu (Server zatim bezi na mem osobnim PC s verejnou IP). Relevantni cast kodu pro uchovani skinu:
if(!IsSet($_COOKIE["WebSex_skin"])) $WebSex_skin = 0;
else $WebSex_skin = $_COOKIE["WebSex_skin"];
if(Isset($Set_skin))
{
setcookie("WebSex_skin", $Set_skin, time()+time());
$WebSex_skin = $Set_skin;
}
?>
time()+time(), ale vzhledem k tomu, že aktuální hodnota času je větší než 2^30, bude na většině implementací hodnota time()+time() záporná (vzhledem k přetečení). Nahlédnutím do zdrojáků PHP zjistíte, že hodnota expires se posílá jen tehdy, je-li kladná.
. Kazdopadne jsem tam chtel strcit velke cislo, tak jsem proste promenou time() zdvojnasobil a neuvedomil si ze pretece. Musim pak najit v ktere promene si PHP uchovava maximalni hodnotu celeho cisla (ma ji snad ne? je odvozene od C tak predpokladam ze nejaka konstanta snad bude
). No cookies uz mi funguji, ale v puvodnim clanku opravdu umyslne pisi time()+100000. To mi totiz nefungovalo (a zatim ani nefunguje). Nastesti mi kamarad poslal zdrojaky a ja si vsiml ze ono cislo ma v zavorce - time()+(10000). Udelal jsem to same a ono mi to zaclo fungovat.... Docela divne, ze?
. Teoreticky by sel vytahnout z CVS
. Po pravde receno jsem si plahocicich nul vsiml taky a tak jsem presel na zpusob time()+(60*60*24*365). Dokonce se to i lip cte
.
Jinak vsem velmi dekuji za pomoc
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.