Jump to content
php.lv forumi

pēc 5min iznīcina sesiju un izlogojās


ziedinjsh

Recommended Posts

Nav ne jausmas kā to uztaisīt!?

kad izlogojās tad online statusu uzliek false, bet kad ielogojās uzliek true.. viss baigijauki, bet kad lietotājs pamet lapu bez izlogošanās.. pāši jau saprotat.. rāda kad ir online! Kā lai panākt ka ja

lietotājs pamet lapu bez izlogošanās pēc 5 min noņem online statusu?

 

meiģināju šādi, bet protams nekas nesanāca

session_start();

$offline = time() - 300;
mysql_query("UPDATE users SET online='false' WHERE lastseen<'$offline'") or die(mysql_error());
session_destroy();

 

šo biju ielicis iekš index.php bet kā refrešoju tā nodzēsa sessija.. tas būtu diezgan loģiski

Edited by ziedinjsh
Link to comment
Share on other sites

Varbūt loģiski būtu loģiski, kad ienāk jebkurš lietotājs, tad paskatāmies users tabulā lietotājus, kuri ir veikuši kādu aktivitāte ne ilgāku laiku iepriekš, ka tas ir noteikts.

 

Kad lietotājs veic aktivitāti, atzīmē tabulā pēdējās aktivitātes laiku.

Lai uzzinātu, vai šis lietotājs skaitās tiešsaistē, paskaties, vai nav pagājušas, teiksim, vismaz 5 minūtes kopš pēdējās aktivitātes.

Link to comment
Share on other sites

uzmurgoju kaut ko šādu, bet neesmu pārliecināts, ka viņš strādās!

 

$lastseen = TIME($data['lastseen']);

if (!isset($_SESSION['email'])) {
$lastseen = time();
}
if (time() - $lastseen > 1200) {
header("location:process/logout_process.php");
} else {
$lastseen = time();
}

Link to comment
Share on other sites

Tev jau briedis pateica visu, tu tikai turpini domāt citā virzienā. Tev jāskatās tikai pēdējās aktivitātes laiku, kad attēlo online lietotājus. To "online" lauku tev būtībā nemaz nevajag. Kad lietotājs kaut ko izdara, tad apdeito to $lastseen un pie tiešsaistes lietotāju saraksta atlasi tikai tos, kuriem tas $lastseen ir piemēram to pašu 5min robežās. Ja nu ļoti vēlies to "online" lauku, tad tajā pašā brīdī arī vari pārējiem taisīt apdeitu.

Link to comment
Share on other sites

1. Lietotājs veic kaut kādu aktivitāti

$sql = mysql_query("update lietotaji set last_seen=now()");

 

2. Tu gribi parbaudit vai shis lietotajs vel tiek skaitits ka online

 if(mysql_fetch_object(mysql_query("select count(id) as cnt from lietotaji where last_seen>".(time()-300)))->cnt){ echo "online"; } 

Link to comment
Share on other sites

Labs risinājums, GW. Tas jau nekas, ka, tas arī nozīme, ka pat neizlogojoties sesija tiks iznīcināta.

un ja pirmajā lapā (index) ieliksi laika pārbaudi, un session_destroy(), tad sesija netiks iznīcinata? :P

ja nebūs pagājušas 5 minūtes tad pie pirmā session_start() sesijas laika skaitītājs nonullēsies ..

un atkal varēsi gaidīt 5 minūtes (etc. citu laiku).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...