Diskuze: Náhodná změna hodnoty v Session
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 7 zpráv z 7.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Pokud pouzivas IE, tak pro framy, jsem cetl, ze musi byt v header toto
header('P3P: CP="CAO PSA OUR"'); // aby session fungovala spravne v iframe v IE
Jinak, existuje funkce regenerate session id. Tu sem videl pouzivat snad jen ve 2 programech za vsechna ta leta. Takze nemam tuseni, za jakych okolnosti bylo nutne ji pouzit.
Jestli pouzivas https, tak si zkontroluj, ze vsechny stranky volas pres https. Prohlizece nemaji treba rady kombinovani http a https.
Jestli je empty $_SESSION["kosik_id"], pak je celkem pravdepodobne, ze mas
prazdnou i $_SESSION. Kazdopadne funkce empty neni isset. Empty slouzi ke
zjisteni nulove hodnoty, isset pro samotnou existenci. Tady to asi nevadi, ale u
formulare by sis mohl nadelat spoustu problemu, pokud nevis, proc a kde jakou
funkci pouzivas 
Muzes si zkusit vypsat var_dump. A muzes pridat error_reporting na prvni php
radek. Treba tam mas furu chyb.
Jo, a zkus vysledovat typ a verzi prohlizece. Snadneji se to pak googluje, pokud
je to chyba specialne pro nejaky prohlizec.
Dělá to na různých počítačích (Windows, mac) i prohlížečích. Je to jednou za čas. $_SESSION naplněná bude, protože hodnoty jako jsou jméno, příjmení atd. zůstanou i po změně kosik_id. Což je divné. Nicméně děje se to jednou za čas a nejsem schopen to tedy vychytat. Var_dump vypíše hodnotu, to je v pohodě a error_reporting je zapnutý a nic. Změnil jsem tedy na isset a uvidíme.
Pokud ostatni zustane, znamena to, ze mas nekde v kodu chybu. Kod, ktery
dokaze tu jedinou hodnotu zrusit. Unset, free_mem, session[hosnota] = '' a
podobne. Takze by melo stacit projit uplne vse, kde se vyskytuje slovo session
nebo hodnota (kosik_id) a najit to.
Error_reporting je dobry na hledani takovych chyb, jako mezera, utf-bom znak
pred tagem php, kdy pak pise session is started a odmita menit dal hodnotu
session. Ale, to se da resit ob_start na zacatku.
Kdyz si pres zminovanou cast kodu das var_dump, tak je to vse ok?
Protoze empty neni isset, empty je true, kdyz value==0 =='0' ==0.5 (https://www.php.net/…on.empty.php), a mozna i ==''. Jsi si
jisty, ze nemas kosik=0, treba.
Změnil jsem trochu kód, tak uvidíme. Nicméně nikde v kódu to nenastavuji. var_dump nic.
No, nevim, nevim.
Podle toho, jak jsi to popsal, tak tam mas nejspis kod, ktery ti tu hodnotu
kosiku zrusi. Ten je treba najit a upravit.
jinak, ten var_dump bych tam napsal takto:
if (empty($_SESSION["kosik_id"])){
var_dump('chyba session', $_SESSION);
echo 'Pokud vidite tuto zpravu, zkuste mi popsat, co jste delali tesne pred tim na mail.. Na co jste klikli na z jake stranky. Pripadne uplne od zacatku vasi navstevy, pokud si to pamatujete';
}
Pokud nemas nic v kodu, co tu dava do session treba nejakou promennou, ktera je aktualne null, tak by mohl byt nejaky problem na serveru pri ukladani session.
Tak jsme přišli na problém. Celý problém se Session a Cookie byl v nastavení Samesite=strict.
Bohužel jsem o tom neměl tušení, že tam kolega tohle vůbec dal v rámci bezpečnosti CSP a přišel jsem na to až po dlouhé době. Nastavili jsme tedy na Lax a je to v pohodě.
Vzhledem k tomu, že v Session udržujeme jen ID košíku, tak předpokládám, že to bezpečnostní riziko nepředstavuje. S Lax funguje web tak, jak má. Takže kdyby to někdo řešil, tak...
Zobrazeno 7 zpráv z 7.