IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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

Aktivity
Avatar
Neaktivní uživatel:1.4.2014 20:28

Ahoj,
potřeboval bych udělat jednoduchou stránku, kde se uživatelé mohou přihlásit a aby se automaticky neodhlásili, pokud nekliknou někam jinam. Jenže nechápu příkazy session a potřeboval bych poradit, jak do session uložit kdo je přihlášený. Na netu jsem hledal ale všechny stránky, na kterých to bylo byly zastaralé (např. rok 2000, 2003 atd.)

Odpovědět
1.4.2014 20:28
Neaktivní uživatelský účet
Avatar
pokusnicek
Člen
Avatar
pokusnicek:1.4.2014 20:30

Ahoj,

zatím bych začal tím, aby si přiložil zdrojové kody co teď máš a od toho se můžeme odpíchnout dál.

 
Nahoru Odpovědět
1.4.2014 20:30
Avatar
Vojta Pšenák
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Vojta Pšenák:1.4.2014 20:32

Možná píšu blbosti, ale pokud vím, tak si uděláš v login.php něco jako tohle:

session_start();
//Hromada kódu
$_SESSION['jmeno'] = $jmenozdatabaze;
$_SESSION['id'] = $idzdatabaze;

Pak můžeš kontrolovat, zda je v $_SESSION['jmeno'] něco.

 
Nahoru Odpovědět
1.4.2014 20:32
Avatar
Odpovídá na Vojta Pšenák
Neaktivní uživatel:1.4.2014 21:05

Asi to máš správně. V tom druhém souboru musím napsat taky na začátku session_start()?

//druhy_soubor.php
session_start()
$jmeno=$_SESSION['jmeno']

Mimochodem: je tato metoda trošku blbuvzdorná (jestli se nedá hacknout jen přepsáním adresy)?

Nahoru Odpovědět
1.4.2014 21:05
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Uživatel sítě :1.4.2014 21:19

Ano, v každém souboru ve kterém chceš pracovat se session, ho musíš začít.

Tato metoda se ošetřuje hlavně tak, že každému přihlášenému uživateli uložíš většinou po znovu vygenerování session_id. To potom uložím k jeho údajům do db a potom s ním pracuješ, zamezíš tak vícenásobnému přihlášení na jediný účet naráz.
Session se ti po nějakou dobu ukládá přímo na server, záleží na life (defaultně nastaven na dobu co je zapnutý prohlízeč).

Dá se toho zneužít například přes session_id(), který se ukládá do cookies.
Můžeš tomu zamezit, ale tím, že ho jednoduše znovu vygeneruješ (Session Fixation -> session_regene­rate_id()).

Nahoru Odpovědět
1.4.2014 21:19
Chybami se člověk učí, běžte se učit jinam!
Avatar
asanos
Člen
Avatar
asanos:1.4.2014 22:09

Ještě je vhodné flagnout session pomocí httponly. Kdyby ji chtěl někdo ukrást přes xss. Není to dokonalá obrana, ale na jednoduché útoky to stačí...
Říkejme tomu "přední linie". ;)

Nahoru Odpovědět
1.4.2014 22:09
Na světě je 10 typů lidí. Ti, kteří rozumí binárce a ti co nerozumí.
Avatar
Odpovídá na asanos
Uživatel sítě :1.4.2014 22:48

Na to jsem zapomněl, díky.. ;)

Nahoru Odpovědět
1.4.2014 22:48
Chybami se člověk učí, běžte se učit jinam!
Avatar
alfonz
Člen
Avatar
alfonz:2.4.2014 6:56

Ještě jsem četl, že musí být volána funkce session_start() ještě před tagem <html>.

Nahoru Odpovědět
2.4.2014 6:56
lmao
Avatar
Neaktivní uživatel:2.4.2014 7:22

Takže takhle:

//druhy_soubor.php
session_start()
session_regenerate_id()
$_SESSION['jmeno']=$jmeno
echo("Uživatel přihlášen: . $jmeno .")
Nahoru Odpovědět
2.4.2014 7:22
Neaktivní uživatelský účet
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:2.4.2014 10:19

session_start() by měla být zavolána ještě před textovým výstupem. V praxi ale nemám otestováno. Já si prostě zvyknul, že má být jako první. To samé totiž platí i pro funkci header.

 
Nahoru Odpovědět
2.4.2014 10:19
Avatar
Odpovídá na Neaktivní uživatel
Martin Suchodol:2.4.2014 10:40

No hele já bych moc nevpisoval session_start() do další stránek radeji bych jiné stránky zobrazil pomocí $_GET do indexu tak to stačí jen jednou a jako bonus se vyhneš psaní opakovaného kódu pokud bys nevěděl jak na to tak mi napiš sz nebo se mrkni do základů psaní php tady na devbooku avšak bacha na bezpečnost jedná se o příkaz $_GET tak je velmi důležité ověřovat nejen existenci souboru ale i to zda do dané adresy někdo nepropašoval nějaký specialní znak teoreticky bych tam necpal ani čísla ale v praxi se tomu mnohokrát nevyhneš pokud potřebuješ například editovat text apod.

 
Nahoru Odpovědět
2.4.2014 10:40
Avatar
Neaktivní uživatel:2.4.2014 11:33

Jak to myslíš s tím session_id do db?

Nahoru Odpovědět
2.4.2014 11:33
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:2.4.2014 12:24

Co potřebuješ je podrobně popsáno tady: http://www.itnetwork.cz/…php-tutorial

Nahoru Odpovědět
2.4.2014 12:24
New kid back on the block with a R.I.P
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 13 zpráv z 13.