Jump to content
php.lv forumi

par login time out


bra

Recommended Posts

vārdu sakot man ir izveidots login skripts, ar kura palīdzību tieku ielaists sitēmā uz 10 min (600 sekundēm), bet problēma rodas tajā ka netkarīgi ko es daru man pēc 10 min sitēma atslēdzas gribēju uztasīt tā lai kopš pēdējās darbības sāktu skaitīt tās 10 minūtes, bet nav ideju kā To izveidot skaidrs ka mysql db būs, bet kā to visu salikt kopā ?

Link to comment
Share on other sites

pieglabā vai nu mysql (ja dikti gribas) vai tāpat sessijā pēdējo darbības laiku, katru reizi pirms tiek veikta kāda darbība (te lieti noder OOP pieeja, kad visas lapas tiek extendētas no vienas abstracta containera). pirms pēdējās darbības pieglabāšanas pārbaudi iepriekšējās pēdējās darbības laiku, ja lielāks par 10min, sorry logauts.

Link to comment
Share on other sites

nu tik tālu man viss tapa skaidrs, bet kas notiks tajā gadījumā ja pie katras darbības es updeitoju DB ielieku laiku kad veikta kāda opcija, bet kā pateikt tā lai gadījumā ja ir pagājušas tās 10 min un piesēžas kāds cits cilvēks un izdara kādu darbību( jo nav noticis logout) tiek saglabāts pēdējās darbības laiks pa jaunu, te laikam būs vajadzīgs java scripts lai automātiski pēc 10 min neko nedaru refrešo uz logout? vai arī es ko pavisam greizi sadomāju.

Link to comment
Share on other sites

nezinu kāpēc gribi tieši iekš db glabāt, liec iekš sessijas šitādu pēdējās darbības laiku kā unix timestampu. bet ja nu iekš db tomēr, tad pie katram useri pa laukam kurā pēdējās darbības laiks.

 

var arī ar meta tagu refreshot, lai pēc tām 10 min izmet ārā, bet metot pēc 10min ārā jāpārbauda tagadējais laiks pret pēdējās aktivitātes laiku, lai neizmet tādā gadījumā ārā, kad vienas sessijas ietvaros ir vairāki browsera logi atvērti.

Link to comment
Share on other sites

<?php

//uzsākam sessiju prims jebkāda outputta

session_start();

 

/*pārbaudām, vai ir pēdējās pārlādes laiks, ja nav (tikko ienācis),

liekam tekošo laiku */

 

if (!isset($_SESSION['last_action']))

$_SESSION['last_action']=time();

 

/* pārbaudām, cik sekunžu pagājīs no iepriekšējās pārlādes,

pirmo reizi tas būs 0, jo tikko uzlikam to pašu time(),

katru nākāmo reizi salīdzināsim ar laiku ielikto rindā ar ** komentārā */

 

if (time()-$_SESSION['last_action']>600)

exit('Pagājušas vairāk nekā 10 min pēc pēdējās darbības');

 

/* ja mūs izlaida cauri, resp. pirms pēdējās darbības pagājis<10 min,

atjaunojam/ieliekam tekošo darbības laiku */

$_SESSION['last_action']=time(); //**

 

/*kaut kur <head> apvidū varam ielikt refrešu uz 10min+1 sekundi,

lai lapa automātiski pārlādētos pēc 10 dīkstāves minūtēm */

echo '<meta http-equiv="refresh" content="601; url='.$_SERVER['PHP_SELF'].'" />';

?>

 

topics slēgts?

Link to comment
Share on other sites

nu tik tālu man viss tapa skaidrs, bet kas notiks tajā gadījumā ja pie katras darbības es updeitoju DB ielieku laiku kad veikta kāda opcija, bet kā pateikt tā lai gadījumā ja ir pagājušas tās 10 min un piesēžas kāds cits cilvēks un izdara kādu darbību( jo nav noticis logout) tiek saglabāts pēdējās darbības laiks pa jaunu, te laikam būs vajadzīgs java scripts lai automātiski pēc 10 min neko nedaru refrešo uz logout? vai arī es ko pavisam greizi sadomāju.

16865[/snapback]

Kāpēc??

visupirms pārbaudi taimautu un tikai tad, ja nav paarsniegts - updeito. else - logoff...

Link to comment
Share on other sites

<?php

session_start();

if (!isset($_SESSION['last_action']))

$_SESSION['last_action']=time();

if (time()-$_SESSION['last_action']>600)

exit('Pagājušas vairāk nekā 10 min pēc pēdējās darbības');

$_SESSION['last_action']=time();

echo '<meta http-equiv="refresh" content="601; url='.$_SERVER['PHP_SELF'].'" />';

?>

 

topics slēgts?

16868[/snapback]

 

Paldies, bet man kautkā tik un tā nedarbojas moš es neparizās vietās { } saliku varbūt mazliet nokmentēsi kodu, jo domāju ka varbūt kādam citam arī varētu noderēt

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...