Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 80% výuky zdarma!
birthday
Avatar
Zdeněk Pavlátka:29.5.2015 20:14

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):29.5.2015 20:19

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar

Člen
Avatar
:29.5.2015 20:24

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
29.5.2015 20:24
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Fredep:29.5.2015 20:26

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
Avatar
Odpovídá na Zdeněk Pavlátka
Dominik Klapuch:29.5.2015 20:29

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:29.5.2015 20:34

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
Avatar
Odpovídá na Zdeněk Pavlátka
Uživatel sítě :29.5.2015 20:35

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
29.5.2015 20:35
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Zdeněk Pavlátka
Uživatel sítě :29.5.2015 20:37

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

Nahoru Odpovědět
29.5.2015 20:37
Chybami se člověk učí, běžte se učit jinam!
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Uživatel sítě
Fredep:29.5.2015 20:38

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
29.5.2015 20:38
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Fredep
Uživatel sítě :29.5.2015 20:51

Ž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
Odpovídá na Uživatel sítě
Zdeněk Pavlátka:30.5.2015 7:46

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

Člen
Avatar
Odpovídá na Zdeněk Pavlátka
:30.5.2015 8:22

Kdyz chces zlikvidovat veskere uzivatelovy sessions z tve stranky.

 
Nahoru Odpovědět
30.5.2015 8:22
Avatar
Odpovídá na
Zdeněk Pavlátka:30.5.2015 8:50

Takže při odhlášení?

Nahoru Odpovědět
30.5.2015 8:50
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar

Člen
Avatar
 
Nahoru Odpovědět
30.5.2015 8:52
Avatar
Otvorený Zdroj
Super redaktor
Avatar
Odpovídá na Fredep
Otvorený Zdroj:31.10.2019 4:43

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?

Nahoru Odpovědět
31.10.2019 4:43
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Otvorený Zdroj
Mirek Slouka:31.10.2019 11:17

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

Nahoru Odpovědět
31.10.2019 11:17
I can explain it to you, but I can't understand it for you.
Avatar

Člen
Avatar
:31.10.2019 13:26

On ešte niekto používa session premenné namiesto JWT tokenov?

 
Nahoru Odpovědět
31.10.2019 13:26
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 17 zpráv z 17.