Diskuze: Uchovávání přihlášeného uživatele
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 17 zpráv z 17.
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.
ahoj, moc jsem nepobral to "uchovávat kdo je přihlášen". Jestli myslíš, aby si aplikace pamatovala, že je tam někdo přihlášen, tak si do session ulož jeho ID a pak z databáze vybírej data, která potřebuješ (jméno atd.).
Podívej se, jak se pracuje se session. Poté stačí uložit uživateli onu
session, že je přihlášen, vzhledem k tomu, že je na straně klienta pouze
nějaké ID, nemůže to nijak obejít. (Samozřejmě, že se tyto ID dají
ukrást, ale ukrást se dá vše). Problémy session bývají takové, že na
serverech obvykle za 15 minut vyprší, zruší se.
Proto je lepší používat cookies. V tomto případě si musíš vymyslet
nějaký způsob, jak se bude uživatel pomocí cookie autentizovat a jak celý
systém bude fungovat. Obecně uživateli opět pomocí cookie zapíšeš na
počítač nějaké číslo (náhodné, velké) a to číslo si uložíš do
databáze s informacemi o uživateli. Poté je jen vždy získáš a podle toho
se dozvíš, o jakého uživatele se jedná.
Pokud tomu dobře rozumím, chceš získat seznam uživatelů, kteří jsou online.
Tedy, pokud je přihlášení úspěšné, uložil bych do databáze záznam s tím, že je daný uživatel(ID) přihlášen - nejlépe do zcela jiné tabulky.
Při odhlášení nebo při delší neaktivitě bych tento záznam opět smazal.
Nikdy jsem nic podobného nedělal, tak nevím, zda existuje ještě jiný, lepší způsob.
Pokud bys chtěl získat seznam online lidí, budeš si psát do databáze
jejich přístupy a dejme tomu, že všichni co přistoupili na web před méně
než 3 minutami jsou online.
Kdo by se například doma při odchodu odhlašoval? Z toho počet online
uživatelů nezískáš...
Neaktivní uživatel: Po zapnutí zasedání, se session ID automaticky generuje do cookies a platnost je do uzavření prohlížeče. (někdy se může smazat i po hodině neaktivity, záleží na konfiguraci)
Zdeněk Pavlátka: Také nezapomeň vygenerovat nové zasedání (Ochrana proti session fixation)
Přihlášení může vypadat třeba takto:
//Po úspěšném zadání loginu a hesla stačí toto
session_regenerate_id(); //Ochrana před session fixation
$_SESSION['user_id'] = $id;
A odhlášení provedš:
unset($_SESSION['user_id']);
Uchování kdo je přihlášen: Stačí třeba updatovat čas u uživatele ve sloupci 'aktivita', apod..
Já vím, ale předpokládejme, že by chtěl být přihlášen po dobu jednoho měsíce. Na to se již session použít moc nedá. Navíc na některých free hostincích je doba platnosti session značně omezena...
Životnost zasedání se dá také nastavit, ale jak pravíš všude to není možné.. :/
Ještě bych měl dotaz, kdy se používá session_destroy();
Kdyz chces zlikvidovat veskere uzivatelovy sessions z tve stranky.
Kdo by se například doma při odchodu odhlašoval? Z toho počet online uživatelů nezískáš...
Chces povedat, ze je zbytocne pri prihlasovani cez session, zaroven urobit update uzivatela na online a pri odhlaseni zaroven urobit update na offline, pretoze uzivatel..sa neodhlasi ale zatvori okno...a neexistuje ani riesenie, zeby po zatvoreni okna urobilo presmerovanie na url odhlasenia...? Ake je na to vlastne optimalne riesenie, ktore by dokazalo presne urcit kto je online?
Socket IO se na toto dá použít, můžeš pomocí toho říct, kolik
klientů je aktuálně přihlášených. Jen na straně serveru musíš
ověřovat, jestli jeden uživatel nemá otevřených více oken. Např. tady
Dělají to tam sice v NodeJS, ale neměl by být problém tu logiku převést
do php
Zobrazeno 17 zpráv z 17.
