Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Ahoj. Snažím se přidat na svou stránku přihlašování, to není takový problém. Můj problém je, jak uchovávat kdo je přihlášen. Vím jen, že se k tomu používá session, ale tím moje znalosti končí.

Odpovědět 29.5.2015 20:14
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Konečný (pavelco1998):

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.).

 
Nahoru Odpovědět 29.5.2015 20:19
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Martine, asi přímo neví, jak se session vytváří...
Před použitím SESSION musíš provést

session_start();

Session vytvoříš pomocí

$_SESSION["nazev"] = "obsah";

A session smažeš pomocí

session_destroy();
Nahoru Odpovědět  +2 29.5.2015 20:24
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Fredep:

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á.

Nahoru Odpovědět 29.5.2015 20:26
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Odpovídá na Zdeněk Pavlátka
Dominik Klapuch:

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.

Editováno 29.5.2015 20:32
Nahoru Odpovědět 29.5.2015 20:29
Kód a data patří k sobě.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Dominik Klapuch
Fredep:

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áš...

Editováno 29.5.2015 20:34
Nahoru Odpovědět 29.5.2015 20:34
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Marek Z.:

Fredep: 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']);
Nahoru Odpovědět  +3 29.5.2015 20:35
Chybami se člověk učí, běžte se učit jinam!
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Marek Z.:

Uchování kdo je přihlášen: Stačí třeba updatovat čas u uživatele ve sloupci 'aktivita', apod..

Nahoru Odpovědět  +1 29.5.2015 20:37
Chybami se člověk učí, běžte se učit jinam!
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Marek Z.
Fredep:

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...

Nahoru Odpovědět  +1 29.5.2015 20:38
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Fredep
Marek Z.:

Životnost zasedání se dá také nastavit, ale jak pravíš všude to není možné.. :/

Nahoru Odpovědět 29.5.2015 20:51
Chybami se člověk učí, běžte se učit jinam!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Marek Z.
Zdeněk Pavlátka:

Ještě bych měl dotaz, kdy se používá session_destroy();

Nahoru Odpovědět 30.5.2015 7:46
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
Michal Vašíček:

Kdyz chces zlikvidovat veskere uzivatelovy sessions z tve stranky.

Nahoru Odpovědět 30.5.2015 8:22
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.5.2015 8:50
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.5.2015 8:52
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
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 14 zpráv z 14.