Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
Mam jednoduchy login pomocou session, funguje aj odhlasenie , bvsetko v pohode.
Chcem sa spytat ako vyriesit, aby sa napr. po 30 minutach NECINNOSTI automaticky zrusili session - cize by uzivatela odhlasilo.
Nechcem to pomocou cookies, najlepsie pomocou Session a bez toho, ze by som zapisoval dalsie veci do dtb.
Uvazoval som, ze po prihlaseni zapisem do session time, a potom nejak to porovnavat..lenze ako zarucim, ze to bude porovnavat len pri necinnosti? Proste ja chcem aby to odhlasilo LEN ked 30minut nebude ziadna akcia v admine...
diky
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Spravis to s tym porovnavanim casov v session a budes zapisovat aktualny time() pri kazdom nacitani stranky.
|
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
ano, ale napr. ked user vyplna dlhy formular trebars 20 minut, na server sa neposiela nic, nova stranka sa nenacitava a usera pekne odhlasi v polovici formulara.... a to nechcem..proste len vtedy nech pocita cas, ked user vobec nic nerobi..
nasiel som takyto script:
Kód: // Add the following into your HEAD section<br /> var timer = 0;<br /> function set_interval()<br /> {<br /> //the interval 'timer' is set as soon as the page loads<br /> timer = setInterval("auto_logout()",10000);<br /> // the figure '10000' above indicates how many milliseconds the timer be set to.<br /> //Eg: to set it to 5 mins, calculate 5min= 5x60=300 sec = 300,000 millisec. So set it to 300000<br /> }<br />
function reset_interval()<br /> {<br /> //resets the timer. The timer is reset on each of the below events:<br /> // 1. mousemove 2. mouseclick 3. key press 4. scroliing<br /> //first step: clear the existing timer<br />
if (timer != 0) {<br /> clearInterval(timer);<br /> timer = 0;<br /> //second step: implement the timer again<br /> timer = setInterval("auto_logout()",10000);<br /> // completed the reset of the timer<br /> }<br /> }<br />
function auto_logout()<br /> {<br /> //this function will redirect the user to the logout script<br /> window.location="your_logout_script.php";<br /> }<br />
// Add the following into your BODY tag<br /> onLoad="set_interval()" onmousemove="reset_interval()" onclick="reset_interval()" onkeypress="reset_interval()" onscroll="reset_interval()"
toto moze fungovat podla mna... totiz pri kazdom kliknuti, stlaceni klavesy, scrollovani ci pohybe mysou zacina timer znova...co vy na to?
neni to sice so session, ale pripada mi to ako jedno z rieseni
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 | 30 Bydlisko: Bratislava |
cele zle. ak ma niekto javascript vypnuty, fungovat to nebude.
naviazat nieco ako odhlasenie na aktivitu na stranke tymto sposobom je zbytocne, lahko zmanipulovatelne a nespolahlive.
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
jasne, ked ma niekto javascript vypnuty, tak sa to bude spravat ako sa sprava teraz bez toho automatickeho odhlasenia..
proste ked sa neodhlasi, tak sa zrusi session podla toho ako je server nastaveny.
Ale ked je moj uvedeny script taky zly, tak navrhnite lepsie riesenie - necham si poradit
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
wotan - Ďuri ti navrhol lepšie riešenie v druhom príspevku, neviem čo viac chceš?!
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
wotan
Hej, zmizol prispevok. Ja som cosi napisal a potom som si vsimol, ze chces, aby to pocitalo cas len vtedy, ked user vobec nic nerobi, tak som si to zmazal. Kazdopadne, toto nevidim ako dobre riesenie. Ten skript je amatersky napisany a pri vypnutom JS to nie je funkcne.
Mozes spravit nasledovny JS kod: pri kazdom stlaceni klavesy zapise do premennej aktualny cas. Spravis si setInterval() na kazdych mozno 10 minut, ktory bude obsahovat fciu s kontrolou, ci posledny zaznamenany cas stlacenia klavesy je menej ako napr. 5 minut. Ak ano, vytvoris XMLHttpRequest, ktory requestne lubovolnu tvoju stranku, cim sa do session (vid moj povodny napad, ten sa tam pouzije) zaznamena PHPckom novy cas. Ak by si polhodinu nic nerobil, pri dalsom refreshi stranky alebo kliknuti niekam inam by si bol odhlaseny.
Da sa prirobit aj funkcionalita bez JS - skrytym iframom, ktory bude obsahovat HTTP hlavicku pre refresh. Toto bude mat tu nevyhodu, ze HTTP requesty sa budu odosielat vzdy, ak bude otvorena stranka, nielen vtedy, ak budes tukat do klavesnice. Ale zasa to nie je az take strasne, lebo podstata je neodhlasovat vtedy, ak nic nerobis a len si tak scrollujes po stranke, ale odhlasit vtedy, ak je pravdepodobne, ze uzivatel zavrel prehliadac a odisiel.
|
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
hm, no znie to zaujimavo. otazka znie, ci je nutne to takto komplikovat... ci vobec vy zvyknete pouzivat tae nieco v admine, co sleduje necinnost uzivatela, a ci to neni zbytocne...no lebo ak nie je jednoduchsi sposob, tak to tam radsej nedam. Pripadne to spravi mtak ako Duri odporucal hned na zaciatku, a ako som povodne aj planoval - ze porovnam aktualny cas so session time a vtedy usera odhlasi. Avsak to sa udeje len pri nacitani dalsej stranky, ale tak to uz nevadi. kazdopadne diky.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
wotan - pre mňa je nečinnosť to, ak neprejde na inú stránku s akciou. To, že má otvorený napr. zoznam článkov a skroluje myšou hore a dole, nepovažujem za činnosť.
Rovnako to funguje aj v internet bankingu - tam sa ten čas tiež obnoví iba po prechode na novú obrazovku. Vypĺňanie prevodného príkazu neregistruje ako činnosť (ani to nie je spoľahlivé).
|
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
jasne to vsetko chapem, len som sa chcel vyhnut tomu, ze niekto vyplna ten dlhy formular dlhu dobu a ked ho chce odoslat tak uz ho neodosle, lebo cas vyplnania bol vyssi a odhlasi ho...kedze vyplnanie formulara sa pocita ako necinnost kym sa stranka neobnovi. Ale skusim dat nejakych 20-30 minut, to by mohlo stacit.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Tak to skús urobiť tak, ako to má napríklad ČSOB v internet bankingu.
Hore (vľavo/vpravo) bude ukazovať čas, ktorý ostáva do vypršania platnosti SESSION a vedľa toho bude tlačítko obnoviť. To cez nejaký AJAX nastaví nový čas do SESSION a zároveň aktualizuje zobrazovaný čas na aktuálnej stránke.
|
|
Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
|