Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: SESSION ztrácí hodnotu

Aktivity
Avatar
Martin Brodecký:18.5.2021 17:17

Ahoj,
tak nějak už si nevím rady.

Ve své aplikaci používám klasické přihlášení přes $_SESSION. Vše funguje tak, jak má až do doby, než použiji externí odkaz. Např. zapíšu hodnotu do SESSION, v hlavičce webu ověřím, vše ok, user je přihlášen. Pokud napříč webem používám relativní cesty v odkazech, vše funguje. Jakmile bych chtěl ale použít v odkazu doménu, např. "https://www.mo­jedomena.cz/o-onas", tak se informace ze SESSION ztratí a uživatel se tváří jako odhlášený, ikdyž k odhlášení nedošlo. Proč? Extrémně frustrující je i to, že to já osobně nenasimuluji a to ani na localhostu ani ostrém. Mám tu 3 počítače a dva mobily a vše funguje naprosto ok. Kdokoli jiný to ale zkusí, tak mu to nefunguje. Dělali jsme i pokus přes TeamViewer. Když to naklikal kolega, nefungovalo to, když jsem to naklikal já na jeho počítači, fungovalo to. Co se může dít?

Zkusil jsem: Hledal jsem na google, pátral, zkoušel vše možné... nevím si rady.

Chci docílit: Chci udržet SESSION i v externích odkazech.

 
Odpovědět
18.5.2021 17:17
Avatar
Martin Brodecký:18.5.2021 19:03

Ahoj, už přicházím na řešení.. Problém je evidentně v HTTPS. V rámci .htaccess mám nastaveno přesměrování všeho na .https plus nice URLs a asi zde mám někde chybu. $_SESSION totiž funguje v externím odkazu na doménu jen tehdy, pokud ji zadám ve tvaru bez www a bez http. takže pokud zadám "domena.cz/o-nas", tak se SESSION ukáže a pokud zadám cokoli jiného, tak ne - např. www.domena.cz/o-nas či https://www.domena.cz/o-nas. V .htaccessu mám toto: Kde mám chybu?

RewriteEngine On

# all redirection HTTP -> HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
ReWriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
 
Nahoru Odpovědět
18.5.2021 19:03
Avatar
Jan Kerhart
Člen
Avatar
Odpovídá na Martin Brodecký
Jan Kerhart:19.5.2021 1:22

V HTTPS jako takovém by problém být neměl. Nevím, jak máš v PHP nastavené cookies a session, ale ve výchozím nastavení se PHPSESSID ukládá pouze pro aktuální subdoménu tj. verze s www a bez www mají session oddělený. Pokud není problém ještě někde jinde, tak by ale varianta s https a bez www měla také fungovat, tj. https://domena.cz/o-nas

Osobně bez ohledu na tento problém doporučuji si vždy vybrat pouze jednu variantu, držet se jí a tu druhou na ni přesměrovat. Já vždy používám variantu s www.

 
Nahoru Odpovědět
19.5.2021 1:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.