Autor Zpráva
JardaB
Profil
Zdravím, stále mám trochu nejasnosti v cookies a jejich platností v různé úrovni stromu. Myslel jsem, že když zapíšu cookies např v root, tak budou platné i pro podadresáře. Potřebuji vyřešit zápis cookies tak, aby ikdyž je zapíšu v kořeni nebo v podadresáři, tak byly platné pro celou strukturu. Některé scripty volám z javascriptu a volané soubory nejsou v kořenovém adresáři. Tedy zapsané cookies pak nemám k dispozici všude.

v manuálu jsem našel tohle:
<?php
$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
setcookie('cookiename', 'data', time()+60*60*24*365, '/', $domain, false);
?>

Nejsem si ale jistý, zda je to správné řešení a zda mi to bude fungovat i na localhost. Nechci s tím experimentovat, abych se nezamotal. Dík za rady.
Keeehi
Profil
JardaB:
Pro nastavení platnosti pro všechny adresáře i podadresáře to máš správně. Čtvrtý parametr '/' to zajistí.

S dotazem to nesouvisí ale zeptat se musím, víš co dělá ten šestý parametr? A že je tam možný i sedmý parametr? Oni mají totiž bezpečnostní důsledky tak jestli jsi to jen nezkopíroval aniž by jsi si přesně zjistil, co to vlastně kopíruješ.
N71
Profil *
Podívej se na parametry – false je neplatná hodnota domény.
JardaB
Profil
Keeehi:
Pro nastavení platnosti pro všechny adresáře i podadresáře to máš správně. Čtvrtý parametr '/' to zajistí.

tohle jsem právě testoval a nezapíše to cookies vůbec, je to prostě ignorováno


Keeehi:
Čtvrtý parametr '/' to zajistí.

Tak ještě testuji a cookies to zapíše, ale již nejsou k dispozici v podadresáři. Navíc potřebuji i opak, tj. zápis cookies v podadresáři a ty mít k dispozici o úroveň výš.

$id=9855555;
setcookie("id", $id, time()+3600, "/");



Problém nalezen. Visely tam původně zapsané cookies

setcookie("id", $id, time()+3600);

a ten nový zápis je prostě nepřepsal. Vymazal jsem komplet cookies a nyní to funguje.

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:

0