PHP, az édesanyád hétszentségit! #2

írta: lezso6, 3 éve

Előző rész.

Ugye adott header() függvény, amivel HTTP fejléceket lehet küldeni. Tök jó cucc, müxik, hurrá.

Van egy másik, a setcookie(), amivel ugye sütiket lehet rögzíteni, módosítani, törölni.

De buta mint a segg, régi össze-vissza foltozott bloatware fos, borzalom használni.

Az ember gondolná, hogy akkor ír egy saját, a natív setcookie() függvényt helyettesítő kis API-t, ami majd a header()-t hívogatja, úgy rögzít sütit. Megírod, működik faján évekig, hurrá.

Csak azt hitted! Mert amikor egy scripten belül több sütit akarsz rögzíteni, akkor hirtelen azon kapod magad, hogy csak az utolsót rögzíti, a többi le van tojva.

He?! De hát több Set-Cookie header is lehet a HTTP szabvány szerint, mi itt a gond?

Hát az, hogy a header() függvény megpróbál "okos" lenni, s ha ugyanazt a nevű fejlécet küldenéd többször, akkor az új felülírja az előzőt, mert hogy ugyanaz a neve. Amivel nem lenne gond, csak hát a Set-Cookie fejléc lényege pont az, hogy ahány süti, annyit küldesz. Ezért ha nem akarsz felülírást, akkor így kell hívni:

header("Set-Cookie: foo=bar; HttpOnly; Stb", false);