Diskuze: Změna PHPSESSID
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 12 zpráv z 12.
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.


Pravdepodobne mas v kodu prazdne radky pred tim nez volas session start.
Jinak, obcas se pouziva session_regenerate_id (http://php.net/….session.php)
Mozna bych to upresnil.
Zalezi na tom, jak mas nastavene php. Ale default je nastavene tak, ze kdyz ma
html kod nebo echo, tak okamzite data posila uzivateli. a nemuze mu to poslat
bez hlavicky. Takze, ikdyz nebylo jeste spusteno session_start a je v kodu
prazdny radek, mezera nebo html kod, musi k tomu vygenerovat header / prazdne
session. Tim padem dostanes jine session id, do ktereho pak zapise data, jmeno
uzivatele a tak.
Da se tomu predejit, kdyz das na uplne prvni radek ob_start(); Pak by mel
vypnout okamzite posilani.
Nebo si zkontroluj kod a smaz nevalidni data.
Pro rychlejsi hledani je dobre zapnout error_reporting(E_ALL). Pokud tam nemas
pred prikazy zavinace @ na potlaceni chyb, melo by to pri volani session_start
pindat chybu neco jako header is seded. Tak nekde pred tim radkem mas zbytecny
kus html kodu nebo echo, print_r, var_dump, proste neco, co vypise html kod.
Muze se to nachazet v include. Muze se jednat o znak UTF-8 BOM.
Ok, vyřeší to, když nastavím auto session_start?
Pokud by tam byla tato chyba, tak by to přeci nefungovalo nikdy, mně jde o to, že to 80x jde v pořádku a 20x se musí na tom počítači vymazat cookies, aby se přiřadilo PHPSESSID jen jedno a neustále se neměnilo.
Chyby mám zapsané a @ nepoužívám. Chyby to žádné nedává. Kde jsem to sledoval, tak session_start() je vždy hned na začátku.
Tezko rici. Zkus udelat jednoduchy priklad a ukazat jeho kod. Takhle se tu bavime o jakesi fiktivni veci. Muze tam byt cokoliv. Zkus tam do kodu zabudovat to session_regenerate_id, viz priklady v dokumentaci php.net, jestli to pomuze.
Ono se da potlacit ty chyby se session. Proto jsem zminil error_reporting(E_ALL). Pripadne pres htaccess zmenit nastaveni php, pokud server povoluje htaccess. Nebo pres ini_php() nebo potom primo v php.ini.
Spis ale hadam nejaky ten znak, echo a pod. Mozna to je unikatni stranka,
kterou malokdo otevira.
Mozna by slo tam pripsat kod, aby pri zmene session id vypsal tez jmeno
souboru/stranky.
Jako, kdyz si smazes cookies, tak prijdes o session. Ty jsou vzajemne
propojene.
Ok, tak tedy, nyní mám problém, aby mi prohlížeč udržel stejné sessionid po reloadu stránky.
Vytvořil jsem soubor kde je jen toto:
<?php
session_start();
echo session_id();
Na jednom prohlížeči (FF), po vypnutí PC a znovu nastartování mi to po
každém refresh dává jinou hodnotu.
Na chrome mi to dá jen jednu a je to v pořádku. Pokud na FF vymažu cookies,
tak je to v pořádku a zachytí se jen jedna. Session_regenerate_id nepomohla
a chyby to žádné nepíše.
Nějak nechápu, proč mu vadí nějaká hondota v cookies v prohlížeči a není schopen to udržet.
Tak ještě jeden poznatek. Problém to způsobuje na subdoméně tedy na x.y.cz pokud jsem vymazal všechny cookies z y.cz, tak se session id nemění.
Nakopne mě prosím někdo správným směrem?
Zkus nastavit session_name na subdoméně na jiné a dej vědět jestli to bude pořád dělat.
Teď se mi to stalo i na doméně y.cz. Vytvořilo se cookies na doménu .y.cz, ostatní cookies jsou na server x.y.cz nebo na server www.y.cz.
Co s tím?
Tak zatím to vypadá, že by měla pomoci tato věc:
ini_set('session.cookie_domain', '.y.cz' );
Otevírám téma znovu.
Zjistil jsem, že subodmény např. sub.domain.cz má PHPSESSID xxxx, sub2.domain.cz má PHPSESSID yyyy, ale pokud si dám vypsat echo session_id(), tak mi to vypíše hodnotu zzzzz. hodnota zzzzz je PHPSESSID u domény ".domain.cz".
Jak je možné, že jak na sub.domain.cz i na sub2.domain.cz i na .domain.cz se používá stejné PHPSESSID zzzzz.
Nepomohlo ani nastavené na sub.domain.cz - ini_set('session.cookie_domain', 'sub.domain.cz' );
Nikde nastavení ini_set('session.cookie_domain', '.domain.cz' ); nepoužívám. Jak je tedy možné, že sub.domain.cz i sub2.domain.cz přebírají PHPSESSID z .domain.cz.
www.domain.cz má také jiné PHPSESSID mmmm a také používá PHPSESSID z .domain.cz
Co s tím?
Spíš mě zajímá kde se vezme PHPSESSID pro .domain.cz (tečka domain.cz)? Pokud toto odstraním z cache prohlížeče, tak vše jede v pořádku.
Zobrazeno 12 zpráv z 12.