Autor | Zpráva | ||
---|---|---|---|
susenka Profil * |
#1 · Zasláno: 3. 8. 2013, 16:06:08
Ahoj,
chci uložit cookie (při vložení prvního zboží do košíku), používám k tomu tento kód setcookie("kosik", "$token:$hash_ip", strtotime("+30 minutes")); Na localhostu se mi cookie ukládá, na webu nikoliv. Přitom na tom samém webu se mi ukládá cookie při přihlašování, pro porovnání: setcookie("login", "$_SESSION[user_name]:$token:$hash_ip", strtotime("+1 month")); Nevíte někdo, proč se mi cookie s názvem kosik neukládá? Děkuju |
||
Jan Tvrdík Profil |
susenka:
V prvé řadě – máš nějaký důvod, proč to neřešit přes session? Teď k tomu vlastnímu problému s cookies – ideální je začít prohlídkou HTTP požadavků mezi prohlížečem a serverem (jsou vidět ve vývojářských nástrojích v prohlížečích) a sledovat, která strana udělá první chybu. Dovolím si ještě pár připomínek nesouvisejících s popsaným problémem: 1) ad $hash_ip – Na IP adrese není dobré moc záviset, protože mezi jednotlivými požadavky se může změnit. Nejběžnější případ je, když se na web někdo připojí z mobilního telefonu. Popojde pár metrů a má jinou IP adresu.
2) ad $_SESSION[user_name] – Máš garantováno, že se tam nikdy neobjeví dvojtečka?
|
||
susenka Profil * |
#3 · Zasláno: 3. 8. 2013, 16:30:59
Zkoušela jsem Firebug - síť > HTML > Hlavičky a chybí Set-Cookie v Hlavičkách odezvy.
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 3. 8. 2013, 16:35:23
susenka:
Není možné, že to volání setcookie na ostrém serveru skončí chybou, o které nevíš, protože na serveru není povoleno vypisování chyb? Jakou má volání setcookie návratovou hodnotu? Neposíláš před tím nějaký výstup?
|
||
susenka Profil * |
#5 · Zasláno: 3. 8. 2013, 16:43:52
setcookie mi navrátí false. Před tím - odešle se formulář (post), zjistí se, zda cookie již existuje, pokud ne, má vytvořut novou.
|
||
susenka Profil * |
#6 · Zasláno: 4. 8. 2013, 13:59:45
Už jsem na to přišla - je to jak psal Jan. Takže stačilo posunout ten kus kódu na začátek...
z php.net: setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace. |
||
Časová prodleva: 11 let
|
0